
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \!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	ƒrÊe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	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�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Ž|�sšt	dƒ‚|�r²|d k	�r²t	dƒ‚|�rÊ|d k	�rÊt	dƒ‚|�râ|d k	�rât	dƒ‚t| |	�ròd�pôd|
�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 �r¼t}ytj|jƒ ƒj}W n ttfk
�r¬   Y nX |dk�r¼|}|dk �rÎt	dƒ‚|dk�rê|�râ|S t	dƒ‚|�rüt||ƒ}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_bufferingZbsÚbuffer© r?   ú/usr/lib64/python3.6/_pyio.pyÚopen(   s¤    {




>




rA   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)

)rA   Ú__doc__)ÚselfÚobjÚtypr?   r?   r@   Ú__get__ÿ   s    zDocDescriptor.__get__N)Ú__name__Ú
__module__Ú__qualname__rG   r?   r?   r?   r@   rB   ü   s   rB   c               @   s   e Zd Zeƒ Zdd„ ZdS )ÚOpenWrapperc             O   s
   t ||ŽS )N)rA   )ÚclsÚargsÚkwargsr?   r?   r@   Ú__new__  s    zOpenWrapper.__new__N)rH   rI   rJ   rB   rC   rO   r?   r?   r?   r@   rK     s   rK   c               @   s   e Zd ZdS )ÚUnsupportedOperationN)rH   rI   rJ   r?   r?   r?   r@   rP     s   rP   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)rP   Ú	__class__rH   )rD   Únamer?   r?   r@   Ú_unsupported@  s    zIOBase._unsupportedr   c             C   s   | j dƒ d S )NÚseek)rT   )rD   ÚposÚwhencer?   r?   r@   rU   G  s    zIOBase.seekc             C   s   | j ddƒS )Nr   r
   )rU   )rD   r?   r?   r@   ÚtellW  s    zIOBase.tellNc             C   s   | j dƒ d S )NÚtruncate)rT   )rD   rV   r?   r?   r@   rY   [  s    zIOBase.truncatec             C   s   | j ƒ  d S )N)Ú_checkClosed)rD   r?   r?   r@   Úflushe  s    zIOBase.flushFc             C   s    | j sz| jƒ  W d d| _ X d S )NT)Ú_IOBase__closedr[   )rD   r?   r?   r@   r3   o  s    zIOBase.closec          	   C   s   y| j ƒ  W n   Y nX d S )N)r3   )rD   r?   r?   r@   Ú__del__z  s    zIOBase.__del__c             C   s   dS )NFr?   )rD   r?   r?   r@   Ú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^   rP   )rD   Úmsgr?   r?   r@   Ú_checkSeekable�  s    zIOBase._checkSeekablec             C   s   dS )NFr?   )rD   r?   r?   r@   Úreadable—  s    zIOBase.readablec             C   s    | j ƒ st|d krdn|ƒ‚d S )NzFile or stream is not readable.)ra   rP   )rD   r_   r?   r?   r@   Ú_checkReadablež  s    zIOBase._checkReadablec             C   s   dS )NFr?   )rD   r?   r?   r@   Úwritable¥  s    zIOBase.writablec             C   s    | j ƒ st|d krdn|ƒ‚d S )NzFile or stream is not writable.)rc   rP   )rD   r_   r?   r?   r@   Ú_checkWritable¬  s    zIOBase._checkWritablec             C   s   | j S )N)r\   )rD   r?   r?   r@   Úclosed³  s    zIOBase.closedc             C   s   | j rt|d krdn|ƒ‚d S )NzI/O operation on closed file.)re   r"   )rD   r_   r?   r?   r@   rZ   »  s    zIOBase._checkClosedc             C   s   | j ƒ  | S )N)rZ   )rD   r?   r?   r@   Ú	__enter__Ä  s    zIOBase.__enter__c             G   s   | j ƒ  d S )N)r3   )rD   rM   r?   r?   r@   Ú__exit__É  s    zIOBase.__exit__c             C   s   | j dƒ d S )Nr*   )rT   )rD   r?   r?   r@   r*   Ñ  s    zIOBase.filenoc             C   s   | j ƒ  dS )NF)rZ   )rD   r?   r?   r@   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   )rh   Úfindr!   Úmin)Z	readaheadÚn)rD   Úsizer?   r@   Ú
nreadaheadî  s    

z#IOBase.readline.<locals>.nreadaheadc               S   s   dS )Nr
   r?   r?   r?   r?   r@   rn   ÷  s    r
   zsize must be an integerr   ri   r   )	Úhasattrr   r   r   Ú	bytearrayr!   ÚreadÚendswithr   )rD   rm   rn   Úresr   r?   )rD   rm   r@   Úreadlineâ  s     
	

zIOBase.readlinec             C   s   | j ƒ  | S )N)rZ   )rD   r?   r?   r@   Ú__iter__  s    zIOBase.__iter__c             C   s   | j ƒ }|st‚|S )N)rt   ÚStopIteration)rD   Úliner?   r?   r@   Ú__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!   )rD   Zhintrl   Úlinesrw   r?   r?   r@   Ú	readlines  s    

zIOBase.readlinesc             C   s$   | j ƒ  x|D ]}| j|ƒ qW d S )N)rZ   Úwrite)rD   r{   rw   r?   r?   r@   Ú
writelines#  s    
zIOBase.writelines)r   )N)N)N)N)Nr   )r   )N)rH   rI   rJ   rT   rU   rX   rY   r[   r\   r3   r]   r^   r`   ra   rb   rc   rd   Úpropertyre   rZ   rf   rg   r*   r'   rt   ru   rx   r|   r~   r?   r?   r?   r@   rQ     s2   $


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

%
rQ   )Ú	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   )Úreadallrp   Ú	__index__Úreadintor   )rD   rm   r   rl   r?   r?   r@   rq   9  s    

zRawIOBase.readc             C   s8   t ƒ }x| jtƒ}|sP ||7 }qW |r0t|ƒS |S d S )N)rp   rq   r(   r   )rD   rs   Údatar?   r?   r@   r‚   J  s    
zRawIOBase.readallc             C   s   | j dƒ d S )Nr„   )rT   )rD   r   r?   r?   r@   r„   X  s    zRawIOBase.readintoc             C   s   | j dƒ d S )Nr}   )rT   )rD   r   r?   r?   r@   r}   `  s    zRawIOBase.writeNr   )r   )rH   rI   rJ   rq   r‚   r„   r}   r?   r?   r?   r@   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 )Nrq   )rT   )rD   rm   r?   r?   r@   rq   ~  s    zBufferedIOBase.readc             C   s   | j dƒ d S )NÚread1)rT   )rD   rm   r?   r?   r@   r‡   ’  s    zBufferedIOBase.read1c             C   s   | j |dd�S )NF)r‡   )Ú	_readinto)rD   r   r?   r?   r@   r„   ˜  s    zBufferedIOBase.readintoc             C   s   | j |dd�S )NT)r‡   )rˆ   )rD   r   r?   r?   r@   Ú	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!   rq   )rD   r   r‡   r…   rl   r?   r?   r@   rˆ   ±  s    

zBufferedIOBase._readintoc             C   s   | j dƒ d S )Nr}   )rT   )rD   r   r?   r?   r@   r}   À  s    	zBufferedIOBase.writec             C   s   | j dƒ d S )NÚdetach)rT   )rD   r?   r?   r@   r�   Ë  s    zBufferedIOBase.detach)N)N)
rH   rI   rJ   rq   r‡   r„   r‰   rˆ   r}   r�   r?   r?   r?   r@   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)rD   r;   r?   r?   r@   Ú__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;   rU   r,   )rD   rV   rW   Znew_positionr?   r?   r@   rU   å  s    z_BufferedIOMixin.seekc             C   s   | j jƒ }|dk rtdƒ‚|S )Nr   z#tell() returned an invalid position)r;   rX   r,   )rD   rV   r?   r?   r@   rX   ë  s    
z_BufferedIOMixin.tellNc             C   s$   | j ƒ  |d kr| jƒ }| jj|ƒS )N)r[   rX   r;   rY   )rD   rV   r?   r?   r@   rY   ñ  s    z_BufferedIOMixin.truncatec             C   s   | j rtdƒ‚| jjƒ  d S )Nzflush of closed file)re   r"   r;   r[   )rD   r?   r?   r@   r[   ÿ  s    z_BufferedIOMixin.flushc          
   C   s0   | j d k	r,| j r,z| jƒ  W d | j jƒ  X d S )N)r;   re   r[   r3   )rD   r?   r?   r@   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�   )rD   r;   r?   r?   r@   r�     s    
z_BufferedIOMixin.detachc             C   s
   | j jƒ S )N)r;   r^   )rD   r?   r?   r@   r^     s    z_BufferedIOMixin.seekablec             C   s   | j S )N)r�   )rD   r?   r?   r@   r;     s    z_BufferedIOMixin.rawc             C   s   | j jS )N)r;   re   )rD   r?   r?   r@   re     s    z_BufferedIOMixin.closedc             C   s   | j jS )N)r;   rS   )rD   r?   r?   r@   rS   !  s    z_BufferedIOMixin.namec             C   s   | j jS )N)r;   r2   )rD   r?   r?   r@   r2   %  s    z_BufferedIOMixin.modec             C   s   t dj| jjƒƒ‚d S )Nz can not serialize a '{0}' object)r   ÚformatrR   rH   )rD   r?   r?   r@   Ú__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}>)rR   rI   rJ   rS   Ú	Exceptionr‘   )rD   ÚmodnameZclsnamerS   r?   r?   r@   Ú__repr__-  s    
z_BufferedIOMixin.__repr__c             C   s
   | j jƒ S )N)r;   r*   )rD   r?   r?   r@   r*   9  s    z_BufferedIOMixin.filenoc             C   s
   | j jƒ S )N)r;   r'   )rD   r?   r?   r@   r'   <  s    z_BufferedIOMixin.isatty)r   )N)rH   rI   rJ   r�   rU   rX   rY   r[   r3   r�   r^   r   r;   re   rS   r2   r’   r•   r*   r'   r?   r?   r?   r@   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   )rp   Ú_bufferÚ_pos)rD   Zinitial_bytesÚbufr?   r?   r@   r�   D  s
    zBytesIO.__init__c             C   s   | j rtdƒ‚| jjƒ S )Nz__getstate__ on closed file)re   r"   Ú__dict__Úcopy)rD   r?   r?   r@   r’   K  s    zBytesIO.__getstate__c             C   s   | j rtdƒ‚t| jƒS )Nzgetvalue on closed file)re   r"   r   r—   )rD   r?   r?   r@   ÚgetvalueP  s    zBytesIO.getvaluec             C   s   | j rtdƒ‚t| jƒS )Nzgetbuffer on closed file)re   r"   r‹   r—   )rD   r?   r?   r@   Ú	getbufferW  s    zBytesIO.getbufferc                s   | j jƒ  tƒ jƒ  d S )N)r—   ÚclearÚsuperr3   )rD   )rR   r?   r@   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   )re   r"   r!   r—   r˜   rk   r   )rD   rm   Znewposr   r?   r?   r@   rq   b  s    
zBytesIO.readc             C   s
   | j |ƒS )N)rq   )rD   rm   r?   r?   r@   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   ó    )
re   r"   r   r   r   r‹   Únbytesr˜   r!   r—   )rD   r   Zviewrl   rV   Zpaddingr?   r?   r@   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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)	re   r"   rƒ   r-   r   r˜   Úmaxr!   r—   )rD   rV   rW   Úerrr?   r?   r@   rU   ˆ  s     
zBytesIO.seekc             C   s   | j rtdƒ‚| jS )Nztell on closed file)re   r"   r˜   )rD   r?   r?   r@   rX   ›  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)re   r"   r˜   rƒ   r-   r   r—   )rD   rV   r¤   r?   r?   r@   rY      s    
zBytesIO.truncatec             C   s   | j rtdƒ‚dS )NzI/O operation on closed file.T)re   r"   )rD   r?   r?   r@   ra   ¯  s    zBytesIO.readablec             C   s   | j rtdƒ‚dS )NzI/O operation on closed file.T)re   r"   )rD   r?   r?   r@   rc   ´  s    zBytesIO.writablec             C   s   | j rtdƒ‚dS )NzI/O operation on closed file.T)re   r"   )rD   r?   r?   r@   r^   ¹  s    zBytesIO.seekable)N)N)r   )N)rH   rI   rJ   r�   r’   rœ   r�   r3   rq   r‡   r}   rU   rX   rY   ra   rc   r^   Ú__classcell__r?   r?   )rR   r@   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)	ra   r,   rŽ   r�   r"   Úbuffer_sizeÚ_reset_read_bufÚLockÚ
_read_lock)rD   r;   r¦   r?   r?   r@   r�   Ê  s    zBufferedReader.__init__c             C   s
   | j jƒ S )N)r;   ra   )rD   r?   r?   r@   ra   ×  s    zBufferedReader.readablec             C   s   d| _ d| _d S )Nr    r   )Ú	_read_bufÚ	_read_pos)rD   r?   r?   r@   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)rD   rm   r?   r?   r@   rq   Þ  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§   ro   r;   r‚   rq   r!   rz   Újoinr£   r¦   rk   )rD   rl   Z
nodata_valZempty_valuesr™   rV   ÚchunkZchunksZcurrent_sizeÚavailZwantedÚoutr?   r?   r@   r¬   ë  sN    




zBufferedReader._read_unlockedr   c          	   C   s   | j � | j|ƒS Q R X d S )N)r©   Ú_peek_unlocked)rD   rm   r?   r?   r@   rh     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   )rk   r¦   r!   rª   r«   r;   rq   )rD   rl   ZwantZhaveZto_readZcurrentr?   r?   r@   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¬   rk   r!   rª   r«   )rD   rm   r?   r?   r@   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rªP t|ƒ| | j	krà| j
j||d … ƒ}|sÖP ||7 }n|oæ|sô| jdƒsôP |r8|r8P q8W W d Q R X |S )Nr   rŠ   r
   )r   r‹   r¢   rŒ   r©   r!   rk   rª   r«   r¦   r;   r„   r±   )rD   r™   r‡   Úwrittenr¯   rl   r?   r?   r@   rˆ   F  s4    


"

zBufferedReader._readintoc             C   s   t j| ƒt| jƒ | j S )N)rŽ   rX   r!   rª   r«   )rD   r?   r?   r@   rX   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Ž   rU   r§   )rD   rV   rW   r?   r?   r@   rU   w  s    zBufferedReader.seek)N)N)r   )r   )r   )rH   rI   rJ   r(   r�   ra   r§   rq   r¬   rh   r±   r‡   rˆ   rX   rU   r?   r?   r?   r@   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)
rc   r,   rŽ   r�   r"   r¦   rp   Ú
_write_bufr¨   Ú_write_lock)rD   r;   r¦   r?   r?   r@   r�   Š  s    zBufferedWriter.__init__c             C   s
   | j jƒ S )N)r;   rc   )rD   r?   r?   r@   rc   •  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rîy| j	ƒ  W nl tk
rì } zPt| jƒ| jkrÜt| 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)re   r"   r   r   r   rµ   r!   r´   r¦   Ú_flush_unlockedÚextendÚBlockingIOErrorÚerrnoÚstrerror)rD   r   Zbeforer²   ÚeZoverager?   r?   r@   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;   rX   rY   )rD   rV   r?   r?   r@   rY   ´  s
    
zBufferedWriter.truncatec          	   C   s   | j � | jƒ  W d Q R X d S )N)rµ   r¶   )rD   r?   r?   r@   r[   »  s    zBufferedWriter.flushc             C   sŽ   | j rtdƒ‚xz| jrˆy| 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)re   r"   r´   r;   r}   r¸   ÚRuntimeErrorr¹   ZEAGAINr!   r,   )rD   rl   r?   r?   r@   r¶   ¿  s    zBufferedWriter._flush_unlockedc             C   s   t j| ƒt| jƒ S )N)rŽ   rX   r!   r´   )rD   r?   r?   r@   rX   Ð  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Ž   rU   )rD   rV   rW   r?   r?   r@   rU   Ó  s
    zBufferedWriter.seek)N)r   )rH   rI   rJ   r(   r�   rc   r}   rY   r[   r¶   rX   rU   r?   r?   r?   r@   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.)ra   r,   rc   r0   Úreaderr/   Úwriter)rD   r¾   r¿   r¦   r?   r?   r@   r�   ë  s    zBufferedRWPair.__init__Nc             C   s   |d krd}| j j|ƒS )Nr
   r   )r¾   rq   )rD   rm   r?   r?   r@   rq   ù  s    zBufferedRWPair.readc             C   s   | j j|ƒS )N)r¾   r„   )rD   r   r?   r?   r@   r„   þ  s    zBufferedRWPair.readintoc             C   s   | j j|ƒS )N)r¿   r}   )rD   r   r?   r?   r@   r}     s    zBufferedRWPair.writer   c             C   s   | j j|ƒS )N)r¾   rh   )rD   rm   r?   r?   r@   rh     s    zBufferedRWPair.peekc             C   s   | j j|ƒS )N)r¾   r‡   )rD   rm   r?   r?   r@   r‡     s    zBufferedRWPair.read1c             C   s   | j j|ƒS )N)r¾   r‰   )rD   r   r?   r?   r@   r‰   
  s    zBufferedRWPair.readinto1c             C   s
   | j jƒ S )N)r¾   ra   )rD   r?   r?   r@   ra     s    zBufferedRWPair.readablec             C   s
   | j jƒ S )N)r¿   rc   )rD   r?   r?   r@   rc     s    zBufferedRWPair.writablec             C   s
   | j jƒ S )N)r¿   r[   )rD   r?   r?   r@   r[     s    zBufferedRWPair.flushc          
   C   s    z| j jƒ  W d | jjƒ  X d S )N)r¿   r3   r¾   )rD   r?   r?   r@   r3     s    zBufferedRWPair.closec             C   s   | j jƒ p| jjƒ S )N)r¾   r'   r¿   )rD   r?   r?   r@   r'     s    zBufferedRWPair.isattyc             C   s   | j jS )N)r¿   re   )rD   r?   r?   r@   re     s    zBufferedRWPair.closed)N)r   )rH   rI   rJ   r(   r�   rq   r„   r}   rh   r‡   r‰   ra   rc   r[   r3   r'   r   re   r?   r?   r?   r@   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)r`   r0   r�   r/   )rD   r;   r¦   r?   r?   r@   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 r‚t
dƒ‚|S )Nzinvalid whence valuer
   r   z seek() returned invalid position)r³   r"   r[   rª   r©   r;   rU   r«   r!   r§   r,   )rD   rV   rW   r?   r?   r@   rU   2  s    $zBufferedRandom.seekc             C   s   | j rtj| ƒS tj| ƒS d S )N)r´   r/   rX   r0   )rD   r?   r?   r@   rX   C  s    
zBufferedRandom.tellNc             C   s   |d kr| j ƒ }tj| |ƒS )N)rX   r/   rY   )rD   rV   r?   r?   r@   rY   I  s    zBufferedRandom.truncatec             C   s    |d krd}| j ƒ  tj| |ƒS )Nr
   r   )r[   r0   rq   )rD   rm   r?   r?   r@   rq   O  s    zBufferedRandom.readc             C   s   | j ƒ  tj| |ƒS )N)r[   r0   r„   )rD   r   r?   r?   r@   r„   U  s    zBufferedRandom.readintoc             C   s   | j ƒ  tj| |ƒS )N)r[   r0   rh   )rD   rm   r?   r?   r@   rh   Y  s    zBufferedRandom.peekc             C   s   | j ƒ  tj| |ƒS )N)r[   r0   r‡   )rD   rm   r?   r?   r@   r‡   ]  s    zBufferedRandom.read1c             C   s   | j ƒ  tj| |ƒS )N)r[   r0   r‰   )rD   r   r?   r?   r@   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;   rU   r«   r!   r§   r/   r}   )rD   r   r?   r?   r@   r}   e  s
    zBufferedRandom.write)r   )N)N)r   )rH   rI   rJ   r(   r�   rU   rX   rY   rq   r„   rh   r‡   r‰   r}   r?   r?   r?   r@   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s–td|f ƒ‚tdd„ |D ƒƒdksº|jd	ƒdkrÂtd
ƒ‚d|kräd| _d| _tjtjB }nVd|k� rúd| _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ƒ�p²ttddƒ}||O }d }�y|dk �r<|�sÜtdƒ‚|d k�röt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�r¬t&| _%t'�r¾t'|tj(ƒ || _)| j�rÚtj*|dt+ƒ W n"   |d k	�røt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?   r@   ú	<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ÚgetattrrA   r,   Úset_inheritabler)   ÚstatÚS_ISDIRÚst_modeÚIsADirectoryErrorr¹   ZEISDIRrº   r-   Ú_blksizer(   Ú_setmoderÃ   rS   Úlseekr	   )
rD   r4   r2   r9   r   ÚfdÚflagsZnoinherit_flagZowned_fdZfdfstatr?   r?   r@   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Æ   re   r#   r$   ÚResourceWarningr3   )rD   r#   r?   r?   r@   r]   ì  s
    
zFileIO.__del__c             C   s   t d| jjƒ‚d S )Nzcannot serialize '%s' object)r   rR   rH   )rD   r?   r?   r@   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>)	rR   rI   rJ   re   rS   r-   rÅ   r2   rÆ   )rD   Ú
class_namerS   r?   r?   r@   r•   ö  s    
zFileIO.__repr__c             C   s   | j stdƒ‚d S )NzFile not open for reading)rÎ   rP   )rD   r?   r?   r@   rb     s    zFileIO._checkReadablec             C   s   | j stdƒ‚d S )NzFile not open for writing)rË   rP   )rD   r_   r?   r?   r@   rd     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   )rZ   rb   r‚   r   rq   rÅ   r¸   )rD   rm   r?   r?   r@   rq     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rŠt|ƒ}|t|tƒ7 }|t|ƒ }ytj| j|ƒ}W n tk
rÂ   |r¾P d S X |sÊP ||7 }qhW t|ƒS )Nr   r
   )rZ   rb   r(   r   rÝ   rÅ   r   r)   Úst_sizer,   rp   r!   r£   rq   r¸   r   )rD   ÚbufsizerV   Úendr<   rl   r®   r?   r?   r@   r‚     s4    zFileIO.readallc             C   s4   t |ƒjdƒ}| jt|ƒƒ}t|ƒ}||d |…< |S )NrŠ   )r‹   rŒ   rq   r!   )rD   r   Úmr…   rl   r?   r?   r@   r„   ?  s
    zFileIO.readintoc             C   s8   | j ƒ  | jƒ  ytj| j|ƒS  tk
r2   d S X d S )N)rZ   rd   r   r}   rÅ   r¸   )rD   r   r?   r?   r@   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   rZ   r   rÝ   rÅ   )rD   rV   rW   r?   r?   r@   rU   U  s    
zFileIO.seekc             C   s   | j ƒ  tj| jdtƒS )Nr   )rZ   r   rÝ   rÅ   r   )rD   r?   r?   r@   rX   e  s    zFileIO.tellc             C   s2   | j ƒ  | jƒ  |d kr | jƒ }tj| j|ƒ |S )N)rZ   rd   rX   r   Ú	ftruncaterÅ   )rD   rm   r?   r?   r@   rY   l  s    zFileIO.truncatec          
      s.   | j s*z| jrtj| jƒ W d tƒ jƒ  X d S )N)re   rÆ   r   r3   rÅ   rŸ   )rD   )rR   r?   r@   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)rZ   Ú	_seekablerX   r,   )rD   r?   r?   r@   r^   †  s    
zFileIO.seekablec             C   s   | j ƒ  | jS )N)rZ   rÎ   )rD   r?   r?   r@   ra   ’  s    zFileIO.readablec             C   s   | j ƒ  | jS )N)rZ   rË   )rD   r?   r?   r@   rc   —  s    zFileIO.writablec             C   s   | j ƒ  | jS )N)rZ   rÅ   )rD   r?   r?   r@   r*   œ  s    zFileIO.filenoc             C   s   | j ƒ  tj| jƒS )N)rZ   r   r'   rÅ   )rD   r?   r?   r@   r'   ¡  s    zFileIO.isattyc             C   s   | j S )N)rÆ   )rD   r?   r?   r@   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Ë   )rD   r?   r?   r@   r2   «  s    zFileIO.moder   )r   TN)N)N)N)"rH   rI   rJ   rÅ   rÊ   rÎ   rË   rÐ   ré   rÆ   r�   r]   r’   r•   rb   rd   rq   r‚   r„   r}   r   rU   rX   rY   r3   r^   ra   rc   r*   r'   r   r9   r2   r¥   r?   r?   )rR   r@   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 )Nrq   )rT   )rD   rm   r?   r?   r@   rq   Ê  s    zTextIOBase.readc             C   s   | j dƒ d S )Nr}   )rT   )rD   Úsr?   r?   r@   r}   Ô  s    zTextIOBase.writeNc             C   s   | j dƒ d S )NrY   )rT   )rD   rV   r?   r?   r@   rY   Ø  s    zTextIOBase.truncatec             C   s   | j dƒ d S )Nrt   )rT   )rD   r?   r?   r@   rt   Ü  s    zTextIOBase.readlinec             C   s   | j dƒ d S )Nr�   )rT   )rD   r?   r?   r@   r�   ã  s    zTextIOBase.detachc             C   s   d S )Nr?   )rD   r?   r?   r@   r6   ì  s    zTextIOBase.encodingc             C   s   d S )Nr?   )rD   r?   r?   r@   Únewlinesñ  s    zTextIOBase.newlinesc             C   s   d S )Nr?   )rD   r?   r?   r@   r7   û  s    zTextIOBase.errorsr   )r   )N)rH   rI   rJ   rq   r}   rY   rt   r�   r   r6   rî   r7   r?   r?   r?   r@   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)rD   rô   ró   r7   r?   r?   r@   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ö   rr   rÉ   rõ   Ú_LFÚ_CRÚ_CRLFró   Úreplace)rD   Úinputr÷   ÚoutputZcrlfZcrZlfr?   r?   r@   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ö   )rD   r™   Úflagr?   r?   r@   r  2  s    
z"IncrementalNewlineDecoder.getstatec             C   s8   |\}}t |d@ ƒ| _| jd k	r4| jj||d? fƒ d S )Nr
   )Úboolrö   rô   Úsetstate)rD   Ústater™   r  r?   r?   r@   r  =  s    
z"IncrementalNewlineDecoder.setstatec             C   s$   d| _ d| _| jd k	r | jjƒ  d S )Nr   F)rõ   rö   rô   Úreset)rD   r?   r?   r@   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õ   )rD   r?   r?   r@   rî   M  s           z"IncrementalNewlineDecoder.newlinesN)rð   )F)rH   rI   rJ   r�   rú   r  r  r  rû   rü   rý   r   rî   r?   r?   r?   r@   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r¨ytj|jƒ ƒ}W n tt	fk
rn   Y nX |d kr¨ydd l
}W n tk
rœ   d}Y nX |jd	ƒ}t |tƒs¾td
| ƒ‚tj|ƒjsÚd}t|| ƒ‚|d krèd}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�rÜy| 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-   rP   Ú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é   Ú_tellingro   Ú
_has_read1Ú	_b2cratiorc   rX   Ú_get_encoderr  )
rD   r>   r6   r7   r8   r=   Úwrite_throughr  r_   Úpositionr?   r?   r@   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‘   rR   rI   rJ   rS   r“   r2   r6   )rD   r<   rS   r2   r?   r?   r@   r•   ½  s    



zTextIOWrapper.__repr__c             C   s   | j S )N)r  )rD   r?   r?   r@   r6   Î  s    zTextIOWrapper.encodingc             C   s   | j S )N)r  )rD   r?   r?   r@   r7   Ò  s    zTextIOWrapper.errorsc             C   s   | j S )N)r  )rD   r?   r?   r@   r=   Ö  s    zTextIOWrapper.line_bufferingc             C   s   | j S )N)r—   )rD   r?   r?   r@   r>   Ú  s    zTextIOWrapper.bufferc             C   s   | j rtdƒ‚| jS )NzI/O operation on closed file.)re   r"   ré   )rD   r?   r?   r@   r^   Þ  s    zTextIOWrapper.seekablec             C   s
   | j jƒ S )N)r>   ra   )rD   r?   r?   r@   ra   ã  s    zTextIOWrapper.readablec             C   s
   | j jƒ S )N)r>   rc   )rD   r?   r?   r@   rc   æ  s    zTextIOWrapper.writablec             C   s   | j jƒ  | j| _d S )N)r>   r[   ré   r%  )rD   r?   r?   r@   r[   é  s    
zTextIOWrapper.flushc          
   C   s0   | j d k	r,| j r,z| jƒ  W d | j jƒ  X d S )N)r>   re   r[   r3   )rD   r?   r?   r@   r3   í  s    zTextIOWrapper.closec             C   s   | j jS )N)r>   re   )rD   r?   r?   r@   re   ô  s    zTextIOWrapper.closedc             C   s   | j jS )N)r>   rS   )rD   r?   r?   r@   rS   ø  s    zTextIOWrapper.namec             C   s
   | j jƒ S )N)r>   r*   )rD   r?   r?   r@   r*   ü  s    zTextIOWrapper.filenoc             C   s
   | j jƒ S )N)r>   r'   )rD   r?   r?   r@   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¤|sœd|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   )re   r"   r   r   r   rR   rH   r!   r  r  r  rþ   r   r(  Úencoder>   r}   r[   Ú_set_decoded_charsr$  r!  r  )rD   rí   ZlengthZhaslfÚencoderr   r?   r?   r@   r}     s&    



zTextIOWrapper.writec             C   s   t j| jƒ}|| jƒ| _| jS )N)rñ   Úgetincrementalencoderr  r  r   )rD   Zmake_encoderr?   r?   r@   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!  )rD   Zmake_decoderrô   r?   r?   r@   Ú_get_decoder  s    
zTextIOWrapper._get_decoderc             C   s   || _ d| _d S )Nr   )r"  r#  )rD   Úcharsr?   r?   r@   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!   )rD   rl   Úoffsetr1  r?   r?   r@   Ú_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)rD   rl   r?   r?   r@   Ú_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
|ƒ |r‚t|ƒt| jƒ | _nd| _| jrœ||| f| _| S )Nz
no decoderg        )r!  r"   r%  r  r&  r>   r‡   Ú_CHUNK_SIZErq   rú   r,  r!   r"  r'  r$  )rD   Ú
dec_bufferÚ	dec_flagsÚinput_chunkÚeofZdecoded_charsr?   r?   r@   Ú_read_chunk>  s     

zTextIOWrapper._read_chunkr   c             C   s(   ||d> B |d> B |d> B t |ƒd> B S )Né@   é€   éÀ   é   )r  )rD   r*  r8  Úbytes_to_feedÚneed_eofÚchars_to_skipr?   r?   r@   Ú_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)rD   ZbigintÚrestr*  r8  r@  rA  rB  r?   r?   r@   Ú_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ƒ }�zšt| j| ƒ}d}x�|dk�r$|jd|fƒ t|j|d |… ƒƒ}	|	|k�r|jƒ \}
}|
�s |}||	8 }P |t|
ƒ8 }d}q¨||8 }|d }q¨W d}|jd|fƒ || }|}|dk�rZ| j||ƒS d}d}d}x´t|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é   rP   r%  r,   r[   r>   rX   r!  r$  r"  r4  r!   r#  rC  r  r   r'  r  rú   Úrange)rD   r*  rô   r8  Z
next_inputrB  Zsaved_stateZ
skip_bytesZ	skip_backrl   r   ÚdÚ	start_posZstart_flagsZ	bytes_fedrA  Zchars_decodedÚir7  r?   r?   r@   rX   y  sv    





zTextIOWrapper.tellc             C   s$   | j ƒ  |d kr| jƒ }| jj|ƒS )N)r[   rX   r>   rY   )rD   rV   r?   r?   r@   rY   Ü  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—   )rD   r>   r?   r?   r@   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r¼td|f ƒ‚|dk rÒt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 �r°t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-  )rD   r?   r@   Ú_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)re   r"   ré   rP   rX   r[   r>   rU   r,  r$  r!  r  rF  r0  r  rq   rú   r!   r"  r,   r#  )rD   ZcookierW   rK  r*  rI  r8  r@  rA  rB  r9  r?   )rD   r@   rU   ê  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 }q¢W |S d S )	Nr
   zan integer is requiredr   T)r÷   r   Fr   )rb   r!  r0  rƒ   r-   r   r3  rú   r>   rq   r,  r$  r!   r;  )rD   rm   rô   r¤   r<   r:  r?   r?   r@   rq   5	  s(    



zTextIOWrapper.readc             C   s(   d| _ | jƒ }|s$d | _| j| _ t‚|S )NF)r%  rt   r$  ré   rv   )rD   rw   r?   r?   r@   rx   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r¾t
|ƒ}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   )re   r"   r   r   r   r3  r!  r0  r  rj   r!   r  r  r;  r"  r,  r$  r5  )rD   rm   rw   ÚstartrV   ÚendposZnlposZcrposr?   r?   r@   rt   W	  sp    




zTextIOWrapper.readlinec             C   s   | j r| j jS d S )N)r!  rî   )rD   r?   r?   r@   rî   ¯	  s    zTextIOWrapper.newlines)NNNFF)N)r   r   r   r   )N)r   )N)N)%rH   rI   rJ   r6  r�   r•   r   r6   r7   r=   r>   r^   ra   rc   r[   r3   re   rS   r*   r'   r}   r(  r0  r,  r3  r5  r;  rC  rF  rX   rY   r�   rU   rq   rx   rt   rî   r?   r?   r?   r@   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Ÿ   rN  r�   r–   r  r   r   r   r‘   r  rH   r}   rU   )rD   Zinitial_valuer8   )rR   r?   r@   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!  r0  r  r  rú   r>   rœ   r  )rD   rô   Z	old_stater?   r?   r@   rœ   Ë	  s    zStringIO.getvaluec             C   s
   t j| ƒS )N)Úobjectr•   )rD   r?   r?   r@   r•   Õ	  s    zStringIO.__repr__c             C   s   d S )Nr?   )rD   r?   r?   r@   r7   Ú	  s    zStringIO.errorsc             C   s   d S )Nr?   )rD   r?   r?   r@   r6   Þ	  s    zStringIO.encodingc             C   s   | j dƒ d S )Nr�   )rT   )rD   r?   r?   r@   r�   â	  s    zStringIO.detach)r   rù   )rH   rI   rJ   r�   rœ   r•   r   r7   r6   r�   r¥   r?   r?   )rR   r@   rN  ´	  s   
rN  >   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³   ro   Úaddr   Ú	SEEK_DATAr(   r¸   rA   rB   rK   rP   r-   r,   r"   ÚABCMetarQ   Úregisterr�   Ú_ior&   r†   rŽ   r–   r0   r/   r½   r.   rì   rò   rï   r1   rN  r?   r?   r?   r@   Ú<module>   st   


 
 T	
  =
gi CZIJ  UAU    ^