
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aùk ã                   @   sx  d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ ej	dkrTd 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 e j¡ e e j¡ d	ZeZeed
ƒp¼ejjZd6dd„Zdd„ Zz
ejZW n ek
� rô   eZY nX G dd„ dƒZ G dd„ dƒZ!z
ej"Z"W n( ek
�rD   G dd„ de#e$ƒZ"Y nX G dd„ dej%d�Z&ej& 'e&¡ G dd„ de&ƒZ(ej( 'e(¡ d dl)m*Z* e( 'e*¡ G dd„ de&ƒZ+e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+ƒZ0G d*d+„ d+e/e.ƒZ1G d,d-„ d-e(ƒZ*G d.d/„ d/e&ƒZ2ej2 'e2¡ G d0d1„ d1ej3ƒZ4G d2d3„ d3e2ƒZ5G d4d5„ d5e5ƒZ6dS )7é    N)Úallocate_lock>   Úwin32Úcygwin)Úsetmode)Ú__all__ÚSEEK_SETÚSEEK_CURÚSEEK_ENDé   é   Ú	SEEK_HOLEi    ZgettotalrefcountÚréÿÿÿÿTc              	   C   s¦  t | tƒst | ¡} t | tttfƒs0td|  ƒ‚t |tƒsFtd| ƒ‚t |tƒs\td| ƒ‚|d k	rzt |tƒsztd| ƒ‚|d k	r˜t |tƒs˜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�rD|	�s"|�s"|�s"|�r*t	dƒ‚dd l
}| dtd¡ d}
|�rX|�rXt	dƒ‚|	|
 | | dk�rvt	dƒ‚|	�s–|
�s–|�s–|�s–t	dƒ‚|�r®|d k	�r®t	dƒ‚|�rÆ|d k	�rÆt	dƒ‚|�rÞ|d k	�rÞt	dƒ‚|�r|dk�rdd l
}| dtd¡ t| |	�rd�pd|
�r"d�p$d |�r2d	�p4d |�rBd
�pDd |�rRd�pTd ||d�}|}�z$d}|dk�sŠ|dk �r’| ¡ �r’d}d}|dk �rÞt}zt | ¡ ¡j}W n ttfk
�rÎ   Y nX |dk�rÞ|}|dk �rðt	d ƒ‚|dk�r|�r|W S t	d!ƒ‚|�r t||ƒ}n<|	�s2|�s2|�r>t||ƒ}n|
�rPt||ƒ}nt	d"| ƒ‚|}|�rl|W S t|||||ƒ}|}||_|W S    | ¡  ‚ Y nX d S )#Nzinvalid file: %rzinvalid mode: %rzinvalid buffering: %rúinvalid encoding: %rú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 argumentzaline buffering (buffering=1) isn't supported in binary mode, the default buffer size will be usedÚ )ÚopenerFr   z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ÚRuntimeWarningÚFileIOÚisattyÚDEFAULT_BUFFER_SIZEÚfstatÚfilenoÚ
st_blksizeÚOSErrorÚAttributeErrorÚBufferedRandomÚBufferedWriterÚBufferedReaderÚTextIOWrapperÚmodeÚclose)Úfiler4   Ú	bufferingÚencodingÚerrorsÚnewlineÚclosefdr   ZmodesZcreatingZreadingZwritingZ	appendingZupdatingÚtextZbinaryr$   ÚrawÚresultÚline_bufferingZbsÚbuffer© rA   ú*/opt/alt/python38/lib64/python3.8/_pyio.pyÚopen)   sÆ    {




 ÿ þÿþýü ú



rC   c                 C   s    dd l }| dtd¡ t| dƒS )Nr   z(_pyio.open_code() may not be using hooksr   Úrb)r$   r%   r'   rC   )Úpathr$   rA   rA   rB   Ú_open_code_with_warning  s     ÿrF   c                   @   s   e Zd Zddd„ZdS )ÚDocDescriptorNc                 C   s
   dt j S )Nz\open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True)

)rC   Ú__doc__)ÚselfÚobjÚtyprA   rA   rB   Ú__get__  s    þÿzDocDescriptor.__get__)N)Ú__name__Ú
__module__Ú__qualname__rL   rA   rA   rA   rB   rG     s   rG   c                   @   s   e Zd Zeƒ Zdd„ ZdS )ÚOpenWrapperc                 O   s
   t ||ŽS ©N)rC   )ÚclsÚargsÚkwargsrA   rA   rB   Ú__new__,  s    zOpenWrapper.__new__N)rM   rN   rO   rG   rH   rU   rA   rA   rA   rB   rP   "  s   rP   c                   @   s   e Zd ZdS )ÚUnsupportedOperationN)rM   rN   rO   rA   rA   rA   rB   rV   5  s   rV   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)rV   Ú	__class__rM   )rI   ÚnamerA   rA   rB   Ú_unsupported\  s    
ÿzIOBase._unsupportedr   c                 C   s   |   d¡ d S )NÚseek©rZ   ©rI   ÚposÚwhencerA   rA   rB   r[   c  s    zIOBase.seekc                 C   s   |   dd¡S ©Nr   r
   )r[   ©rI   rA   rA   rB   Útells  s    zIOBase.tellNc                 C   s   |   d¡ d S ©NÚtruncater\   ©rI   r^   rA   rA   rB   rd   w  s    zIOBase.truncatec                 C   s   |   ¡  d S rQ   ©Ú_checkClosedra   rA   rA   rB   Úflush�  s    zIOBase.flushFc                 C   s    | j sz|  ¡  W 5 d| _ X d S )NT)Ú_IOBase__closedrh   ra   rA   rA   rB   r5   ‹  s    zIOBase.closec                 C   sV   z
| j }W n tk
r    Y d S X |r*d S tr8|  ¡  nz|  ¡  W n   Y nX d S rQ   )Úclosedr/   Ú_IOBASE_EMITS_UNRAISABLEr5   )rI   rj   rA   rA   rB   Ú__del__–  s    

zIOBase.__del__c                 C   s   dS ©NFrA   ra   rA   rA   rB   Úseekable±  s    zIOBase.seekablec                 C   s    |   ¡ st|d krdn|ƒ‚d S )NzFile or stream is not seekable.)rn   rV   ©rI   ÚmsgrA   rA   rB   Ú_checkSeekable¹  s    ÿÿzIOBase._checkSeekablec                 C   s   dS rm   rA   ra   rA   rA   rB   ÚreadableÀ  s    zIOBase.readablec                 C   s    |   ¡ st|d krdn|ƒ‚d S )NzFile or stream is not readable.)rr   rV   ro   rA   rA   rB   Ú_checkReadableÇ  s    ÿÿzIOBase._checkReadablec                 C   s   dS rm   rA   ra   rA   rA   rB   ÚwritableÎ  s    zIOBase.writablec                 C   s    |   ¡ st|d krdn|ƒ‚d S )NzFile or stream is not writable.)rt   rV   ro   rA   rA   rB   Ú_checkWritableÕ  s    ÿÿzIOBase._checkWritablec                 C   s   | j S rQ   )ri   ra   rA   rA   rB   rj   Ü  s    zIOBase.closedc                 C   s   | j rt|d krdn|ƒ‚d S ©NúI/O operation on closed file.©rj   r#   ro   rA   rA   rB   rg   ä  s    ÿÿzIOBase._checkClosedc                 C   s   |   ¡  | S rQ   rf   ra   rA   rA   rB   Ú	__enter__í  s    zIOBase.__enter__c                 G   s   |   ¡  d S rQ   )r5   )rI   rS   rA   rA   rB   Ú__exit__ò  s    zIOBase.__exit__c                 C   s   |   d¡ d S )Nr,   r\   ra   rA   rA   rB   r,   ú  s    zIOBase.filenoc                 C   s   |   ¡  dS rm   rf   ra   rA   rA   rB   r)     s    zIOBase.isattyr   c                    s®   t ˆ dƒr‡ ‡fdd„}ndd„ }ˆd kr0d‰n4z
ˆj}W n" tk
r\   tˆ›d�ƒ‚Y nX |ƒ ‰tƒ }ˆdk s~t|ƒˆk r¦ˆ  |ƒ ¡}|s�q¦||7 }| d¡rjq¦qjt|ƒS )	NÚpeekc                     s>   ˆ   d¡} | sdS |  d¡d p&t| ƒ}ˆdkr:t|ˆƒ}|S )Nr
   ó   
r   )r{   Úfindr"   Úmin)Z	readaheadÚn©rI   ÚsizerA   rB   Ú
nreadahead  s    

z#IOBase.readline.<locals>.nreadaheadc                   S   s   dS ©Nr
   rA   rA   rA   rA   rB   r‚      s    r   ú is not an integerr   r|   )	ÚhasattrÚ	__index__r/   r    Ú	bytearrayr"   ÚreadÚendswithr   )rI   r�   r‚   Ú
size_indexÚresr   rA   r€   rB   Úreadline  s&    
	

zIOBase.readlinec                 C   s   |   ¡  | S rQ   rf   ra   rA   rA   rB   Ú__iter__5  s    zIOBase.__iter__c                 C   s   |   ¡ }|st‚|S rQ   )rŒ   ÚStopIteration©rI   ÚlinerA   rA   rB   Ú__next__9  s    zIOBase.__next__c                 C   sP   |d ks|dkrt | ƒS d}g }| D ]&}| |¡ |t|ƒ7 }||kr$ qLq$|S ©Nr   )ÚlistÚappendr"   )rI   Zhintr   Úlinesr�   rA   rA   rB   Ú	readlines?  s    
zIOBase.readlinesc                 C   s    |   ¡  |D ]}|  |¡ qd S rQ   )rg   Úwrite)rI   r•   r�   rA   rA   rB   Ú
writelinesQ  s    zIOBase.writelines)r   )N)N)N)N)N)r   )N)rM   rN   rO   rZ   r[   rb   rd   rh   ri   r5   rl   rn   rq   rr   rs   rt   ru   Úpropertyrj   rg   ry   rz   r,   r)   rŒ   r�   r‘   r–   r˜   rA   rA   rA   rB   rW   9  s4   #







	

*
rW   )Ú	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|   ¡ S t| ¡ ƒ}|  |¡}|d kr>d S ||d …= t|ƒS )Nr   r   )Úreadallr‡   r†   Úreadintor   )rI   r�   r   r   rA   rA   rB   rˆ   l  s    

zRawIOBase.readc                 C   s4   t ƒ }|  t¡}|sq ||7 }q|r,t|ƒS |S d S rQ   )r‡   rˆ   r*   r   )rI   r‹   ÚdatarA   rA   rB   rœ   }  s    

zRawIOBase.readallc                 C   s   |   d¡ d S )Nr�   r\   ©rI   r   rA   rA   rB   r�   ‹  s    zRawIOBase.readintoc                 C   s   |   d¡ d S ©Nr—   r\   rŸ   rA   rA   rB   r—   “  s    zRawIOBase.writeN)r   )rM   rN   rO   rˆ   rœ   r�   r—   rA   rA   rA   rB   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 )ÚBufferedIOBaser   c                 C   s   |   d¡ d S ©Nrˆ   r\   r€   rA   rA   rB   rˆ   ±  s    zBufferedIOBase.readc                 C   s   |   d¡ d S )NÚread1r\   r€   rA   rA   rB   r£   Å  s    zBufferedIOBase.read1c                 C   s   | j |dd�S )NF©r£   ©Ú	_readintorŸ   rA   rA   rB   r�   Ë  s    zBufferedIOBase.readintoc                 C   s   | j |dd�S )NTr¤   r¥   rŸ   rA   rA   rB   Ú	readinto1Ù  s    	zBufferedIOBase.readinto1c                 C   sV   t |tƒst|ƒ}| d¡}|r0|  t|ƒ¡}n|  t|ƒ¡}t|ƒ}||d |…< |S ©NÚB)r   Ú
memoryviewÚcastr£   r"   rˆ   )rI   r   r£   rž   r   rA   rA   rB   r¦   ä  s    

zBufferedIOBase._readintoc                 C   s   |   d¡ d S r    r\   rŸ   rA   rA   rB   r—   ó  s    	zBufferedIOBase.writec                 C   s   |   d¡ d S ©NÚdetachr\   ra   rA   rA   rB   r­   þ  s    zBufferedIOBase.detachN)r   )r   )
rM   rN   rO   rˆ   r£   r�   r§   r¦   r—   r­   rA   rA   rA   rB   r¡      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 rQ   ©Ú_raw©rI   r=   rA   rA   rB   Ú__init__  s    z_BufferedIOMixin.__init__r   c                 C   s"   | j  ||¡}|dk rtdƒ‚|S )Nr   z#seek() returned an invalid position)r=   r[   r.   )rI   r^   r_   Znew_positionrA   rA   rB   r[     s    z_BufferedIOMixin.seekc                 C   s   | j  ¡ }|dk rtdƒ‚|S )Nr   z#tell() returned an invalid position)r=   rb   r.   re   rA   rA   rB   rb     s    
z_BufferedIOMixin.tellNc                 C   s$   |   ¡  |d kr|  ¡ }| j |¡S rQ   )rh   rb   r=   rd   re   rA   rA   rB   rd   $  s    z_BufferedIOMixin.truncatec                 C   s   | j rtdƒ‚| j ¡  d S )Núflush on closed file)rj   r#   r=   rh   ra   rA   rA   rB   rh   2  s    z_BufferedIOMixin.flushc                 C   s.   | j d k	r*| js*z|  ¡  W 5 | j  ¡  X d S rQ   )r=   rj   r5   rh   ra   rA   rA   rB   r5   7  s    z_BufferedIOMixin.closec                 C   s*   | j d krtdƒ‚|  ¡  | j}d | _|S )Nzraw stream already detached)r=   r#   rh   r°   r±   rA   rA   rB   r­   ?  s    
z_BufferedIOMixin.detachc                 C   s
   | j  ¡ S rQ   )r=   rn   ra   rA   rA   rB   rn   I  s    z_BufferedIOMixin.seekablec                 C   s   | j S rQ   r¯   ra   rA   rA   rB   r=   L  s    z_BufferedIOMixin.rawc                 C   s   | j jS rQ   )r=   rj   ra   rA   rA   rB   rj   P  s    z_BufferedIOMixin.closedc                 C   s   | j jS rQ   )r=   rY   ra   rA   rA   rB   rY   T  s    z_BufferedIOMixin.namec                 C   s   | j jS rQ   )r=   r4   ra   rA   rA   rB   r4   X  s    z_BufferedIOMixin.modec                 C   s   t d| jj›d�ƒ‚d S ©Nzcannot pickle z object©r    rX   rM   ra   rA   rA   rB   Ú__getstate__\  s    z_BufferedIOMixin.__getstate__c                 C   sN   | j j}| j j}z
| j}W n  tk
r:   d ||¡ Y S X d |||¡S d S )Nz<{}.{}>z<{}.{} name={!r}>)rX   rN   rO   rY   r/   Úformat)rI   ÚmodnameZclsnamerY   rA   rA   rB   Ú__repr___  s    
z_BufferedIOMixin.__repr__c                 C   s
   | j  ¡ S rQ   )r=   r,   ra   rA   rA   rB   r,   k  s    z_BufferedIOMixin.filenoc                 C   s
   | j  ¡ S rQ   )r=   r)   ra   rA   rA   rB   r)   n  s    z_BufferedIOMixin.isatty)r   )N)rM   rN   rO   r²   r[   rb   rd   rh   r5   r­   rn   r™   r=   rj   rY   r4   r¶   r¹   r,   r)   rA   rA   rA   rB   r®   
  s(   	






r®   c                       s’   e Zd 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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 r’   )r‡   Ú_bufferÚ_pos)rI   Zinitial_bytesÚbufrA   rA   rB   r²   z  s
    zBytesIO.__init__c                 C   s   | j rtdƒ‚| j ¡ S )Nz__getstate__ on closed file)rj   r#   Ú__dict__Úcopyra   rA   rA   rB   r¶   �  s    zBytesIO.__getstate__c                 C   s   | j rtdƒ‚t| jƒS )Nzgetvalue on closed file)rj   r#   r   r»   ra   rA   rA   rB   Úgetvalue†  s    zBytesIO.getvaluec                 C   s   | j rtdƒ‚t| jƒS )Nzgetbuffer on closed file)rj   r#   rª   r»   ra   rA   rA   rB   Ú	getbuffer�  s    zBytesIO.getbufferc                    s"   | j d k	r| j  ¡  tƒ  ¡  d S rQ   )r»   ÚclearÚsuperr5   ra   ©rX   rA   rB   r5   ”  s    

zBytesIO.closer   c                 C   sª   | j rtdƒ‚|d krd}n4z
|j}W n" tk
rH   t|›d�ƒ‚Y nX |ƒ }|dk rbt| jƒ}t| jƒ| jkrvdS tt| jƒ| j| ƒ}| j| j|… }|| _t	|ƒS )Núread from closed filer   r„   r   ó    )
rj   r#   r†   r/   r    r"   r»   r¼   r~   r   )rI   r�   rŠ   Znewposr   rA   rA   rB   rˆ   ™  s"    

zBytesIO.readc                 C   s
   |   |¡S rQ   )rˆ   r€   rA   rA   rB   r£   ®  s    zBytesIO.read1c              	   C   sž   | j rtdƒ‚t|tƒr tdƒ‚t|ƒ�}|j}W 5 Q R X |dkrFdS | j}|t| j	ƒkrzd|t| j	ƒ  }|  j	|7  _	|| j	||| …< |  j|7  _|S )Núwrite to closed fileú can't write str to binary streamr   ó    )
rj   r#   r   r   r    rª   Únbytesr¼   r"   r»   )rI   r   Zviewr   r^   ZpaddingrA   rA   rB   r—   ³  s    

zBytesIO.writer   c                 C   s²   | j rtdƒ‚z
|j}W n" tk
r:   t|›d�ƒ‚Y nX |ƒ }|dkrh|dk r`t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 filer„   r   únegative seek position %rr
   r   zunsupported whence value)	rj   r#   r†   r/   r    r¼   Úmaxr"   r»   )rI   r^   r_   Ú	pos_indexrA   rA   rB   r[   Æ  s"    
zBytesIO.seekc                 C   s   | j rtdƒ‚| jS )Nútell on closed file)rj   r#   r¼   ra   rA   rA   rB   rb   Û  s    zBytesIO.tellc                 C   sx   | j rtdƒ‚|d kr| j}nJz
|j}W n" tk
rJ   t|›d�ƒ‚Y nX |ƒ }|dk rhtd|f ƒ‚| j|d …= |S )Nztruncate on closed filer„   r   znegative truncate position %r)rj   r#   r¼   r†   r/   r    r»   )rI   r^   rÍ   rA   rA   rB   rd   à  s    
zBytesIO.truncatec                 C   s   | j rtdƒ‚dS ©Nrw   Trx   ra   rA   rA   rB   rr   ñ  s    zBytesIO.readablec                 C   s   | j rtdƒ‚dS rÏ   rx   ra   rA   rA   rB   rt   ö  s    zBytesIO.writablec                 C   s   | j rtdƒ‚dS rÏ   rx   ra   rA   rA   rB   rn   û  s    zBytesIO.seekable)N)r   )r   )r   )N)rM   rN   rO   r»   r²   r¶   rÀ   rÁ   r5   rˆ   r£   r—   r[   rb   rd   rr   rt   rn   Ú__classcell__rA   rA   rÄ   rB   rº   r  s   




rº   c                   @   st   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d„Zdd„ Zdd„ Zddd„ZdS ) r2   c                 C   sF   |  ¡ stdƒ‚t | |¡ |dkr,tdƒ‚|| _|  ¡  tƒ | _d S )Nz "raw" argument must be readable.r   úinvalid buffer size)	rr   r.   r®   r²   r#   Úbuffer_sizeÚ_reset_read_bufÚLockÚ
_read_lock©rI   r=   rÒ   rA   rA   rB   r²     s    zBufferedReader.__init__c                 C   s
   | j  ¡ S rQ   )r=   rr   ra   rA   rA   rB   rr     s    zBufferedReader.readablec                 C   s   d| _ d| _d S )NrÆ   r   )Ú	_read_bufÚ	_read_posra   rA   rA   rB   rÓ     s    zBufferedReader._reset_read_bufNc              
   C   s@   |d k	r|dk rt dƒ‚| j� |  |¡W  5 Q R £ S Q R X d S )Nr   zinvalid number of bytes to read)r#   rÕ   Ú_read_unlockedr€   rA   rA   rB   rˆ      s    zBufferedReader.readc                 C   s†  d}d}| j }| j}|d ks$|dkrº|  ¡  t| jdƒrj| j ¡ }|d krZ||d … pXd S ||d … | S ||d … g}d}| j ¡ }||kr”|}q¬|t|ƒ7 }| |¡ q|d 	|¡p¸|S t|ƒ| }	||	krì|  j|7  _|||| … S ||d … g}t
| j|ƒ}
|	|k �rH| j |
¡}||k�r.|}�qH|	t|ƒ7 }	| |¡ �qt||	ƒ}d 	|¡}||d … | _ d| _|�r‚|d |… S |S )NrÆ   )rÆ   Nr   rœ   r   )r×   rØ   rÓ   r…   r=   rœ   rˆ   r"   r”   ÚjoinrÌ   rÒ   r~   )rI   r   Z
nodata_valZempty_valuesr½   r^   ÚchunkZchunksZcurrent_sizeÚavailZwantedÚoutrA   rA   rB   rÙ   -  sL    





zBufferedReader._read_unlockedr   c              
   C   s(   | j � |  |¡W  5 Q R £ S Q R X d S rQ   )rÕ   Ú_peek_unlockedr€   rA   rA   rB   r{   a  s    zBufferedReader.peekc                 C   sr   t || jƒ}t| jƒ| j }||k s,|dkrb| j| }| j |¡}|rb| j| jd … | | _d| _| j| jd … S r’   )r~   rÒ   r"   r×   rØ   r=   rˆ   )rI   r   ZwantZhaveZto_readZcurrentrA   rA   rB   rÞ   k  s    
zBufferedReader._peek_unlockedr   c              
   C   s^   |dk r| j }|dkrdS | j�4 |  d¡ |  t|t| jƒ| j ƒ¡W  5 Q R £ S Q R X d S )Nr   rÆ   r
   )rÒ   rÕ   rÞ   rÙ   r~   r"   r×   rØ   r€   rA   rA   rB   r£   v  s    
ÿzBufferedReader.read1c              	   C   s
  t |tƒst|ƒ}|jdkr dS | d¡}d}| j�Ì |t|ƒk rütt| jƒ| j t|ƒƒ}|r¦| j| j| j| … |||| …< |  j|7  _||7 }|t|ƒkr¦qüt|ƒ| | j	krÜ| j
 ||d … ¡}|sÒqü||7 }n|rä|sð|  d¡sðqü|r6|r6qüq6W 5 Q R X |S )Nr   r©   r
   )r   rª   rÊ   r«   rÕ   r"   r~   r×   rØ   rÒ   r=   r�   rÞ   )rI   r½   r£   ÚwrittenrÜ   r   rA   rA   rB   r¦   ˆ  s6    


ÿ

zBufferedReader._readintoc                 C   s   t  | ¡t| jƒ | j S rQ   )r®   rb   r"   r×   rØ   ra   rA   rA   rB   rb   ¶  s    zBufferedReader.tellc              
   C   sd   |t krtdƒ‚| j�D |dkr4|t| jƒ| j 8 }t | ||¡}|  ¡  |W  5 Q R £ S Q R X d S )Núinvalid whence valuer
   )	Úvalid_seek_flagsr#   rÕ   r"   r×   rØ   r®   r[   rÓ   r]   rA   rA   rB   r[   ¹  s    zBufferedReader.seek)N)N)r   )r   )r   )r   )rM   rN   rO   r*   r²   rr   rÓ   rˆ   rÙ   r{   rÞ   r£   r¦   rb   r[   rA   rA   rA   rB   r2     s   

4



.r2   c                   @   s\   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d„ ZdS )r1   c                 C   sF   |  ¡ stdƒ‚t | |¡ |dkr,tdƒ‚|| _tƒ | _tƒ | _	d S )Nz "raw" argument must be writable.r   rÑ   )
rt   r.   r®   r²   r#   rÒ   r‡   Ú
_write_bufrÔ   Ú_write_lockrÖ   rA   rA   rB   r²   Ì  s    zBufferedWriter.__init__c                 C   s
   | j  ¡ S rQ   )r=   rt   ra   rA   rA   rB   rt   ×  s    zBufferedWriter.writablec                 C   s  t |tƒrtdƒ‚| j�æ | jr(tdƒ‚t| jƒ| jkr@|  	¡  t| jƒ}| j 
|¡ t| jƒ| }t| jƒ| jkrîz|  	¡  W nl tk
rì } zNt| jƒ| jkrÜt| jƒ| j }||8 }| jd | j… | _t|j|j|ƒ‚W 5 d }~X Y nX |W  5 Q R £ S Q R X d S )NrÈ   rÇ   )r   r   r    rã   rj   r#   r"   râ   rÒ   Ú_flush_unlockedÚextendÚBlockingIOErrorÚerrnoÚstrerror)rI   r   Zbeforerß   ÚeZoveragerA   rA   rB   r—   Ú  s(    

"zBufferedWriter.writeNc              
   C   sD   | j �4 |  ¡  |d kr"| j ¡ }| j |¡W  5 Q R £ S Q R X d S rQ   )rã   rä   r=   rb   rd   re   rA   rA   rB   rd   ö  s
    
zBufferedWriter.truncatec              	   C   s   | j � |  ¡  W 5 Q R X d S rQ   )rã   rä   ra   rA   rA   rB   rh   ý  s    zBufferedWriter.flushc                 C   sŠ   | j rtdƒ‚| jr†z| j | j¡}W n tk
rB   tdƒ‚Y nX |d krZttjddƒ‚|t	| jƒksp|dk rxt
dƒ‚| jd |…= qd S )Nr³   zHself.raw should implement RawIOBase: it should not raise BlockingIOErrorz)write could not complete without blockingr   z*write() returned incorrect number of bytes)rj   r#   râ   r=   r—   ræ   ÚRuntimeErrorrç   ZEAGAINr"   r.   ©rI   r   rA   rA   rB   rä     s      þzBufferedWriter._flush_unlockedc                 C   s   t  | ¡t| jƒ S rQ   )r®   rb   r"   râ   ra   rA   rA   rB   rb     s    zBufferedWriter.tellr   c              
   C   sD   |t krtdƒ‚| j�$ |  ¡  t | ||¡W  5 Q R £ S Q R X d S )Nrà   )rá   r#   rã   rä   r®   r[   r]   rA   rA   rB   r[     s
    zBufferedWriter.seekc                 C   s`   | j �$ | jd ks| jr&W 5 Q R £ d S W 5 Q R X z|  ¡  W 5 | j � | j ¡  W 5 Q R X X d S rQ   )rã   r=   rj   r5   rh   ra   rA   rA   rB   r5     s    zBufferedWriter.close)N)r   )rM   rN   rO   r*   r²   rt   r—   rd   rh   rä   rb   r[   r5   rA   rA   rA   rB   r1   Ã  s   	

r1   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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<   |  ¡ stdƒ‚| ¡ s tdƒ‚t||ƒ| _t||ƒ| _d S )Nz#"reader" argument must be readable.z#"writer" argument must be writable.)rr   r.   rt   r2   Úreaderr1   Úwriter)rI   rí   rî   rÒ   rA   rA   rB   r²   <  s    zBufferedRWPair.__init__r   c                 C   s   |d krd}| j  |¡S ©Nr   )rí   rˆ   r€   rA   rA   rB   rˆ   J  s    zBufferedRWPair.readc                 C   s   | j  |¡S rQ   )rí   r�   rŸ   rA   rA   rB   r�   O  s    zBufferedRWPair.readintoc                 C   s   | j  |¡S rQ   )rî   r—   rŸ   rA   rA   rB   r—   R  s    zBufferedRWPair.writer   c                 C   s   | j  |¡S rQ   )rí   r{   r€   rA   rA   rB   r{   U  s    zBufferedRWPair.peekc                 C   s   | j  |¡S rQ   )rí   r£   r€   rA   rA   rB   r£   X  s    zBufferedRWPair.read1c                 C   s   | j  |¡S rQ   )rí   r§   rŸ   rA   rA   rB   r§   [  s    zBufferedRWPair.readinto1c                 C   s
   | j  ¡ S rQ   )rí   rr   ra   rA   rA   rB   rr   ^  s    zBufferedRWPair.readablec                 C   s
   | j  ¡ S rQ   )rî   rt   ra   rA   rA   rB   rt   a  s    zBufferedRWPair.writablec                 C   s
   | j  ¡ S rQ   )rî   rh   ra   rA   rA   rB   rh   d  s    zBufferedRWPair.flushc                 C   s    z| j ¡  W 5 | j  ¡  X d S rQ   )rí   r5   rî   ra   rA   rA   rB   r5   g  s    zBufferedRWPair.closec                 C   s   | j  ¡ p| j ¡ S rQ   )rí   r)   rî   ra   rA   rA   rB   r)   m  s    zBufferedRWPair.isattyc                 C   s   | j jS rQ   )rî   rj   ra   rA   rA   rB   rj   p  s    zBufferedRWPair.closedN)r   )r   )r   )rM   rN   rO   r*   r²   rˆ   r�   r—   r{   r£   r§   rr   rt   rh   r5   r)   r™   rj   rA   rA   rA   rB   rì   ,  s   


rì   c                   @   sj   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d„Zdd„ Zdd„ ZdS )r0   c                 C   s(   |  ¡  t | ||¡ t | ||¡ d S rQ   )rq   r2   r²   r1   rÖ   rA   rA   rB   r²   ~  s    zBufferedRandom.__init__r   c              	   C   s†   |t krtdƒ‚|  ¡  | jrJ| j�  | j | jt| jƒ d¡ W 5 Q R X | j ||¡}| j� |  	¡  W 5 Q R X |dk r‚t
dƒ‚|S )Nrà   r
   r   z seek() returned invalid position)rá   r#   rh   r×   rÕ   r=   r[   rØ   r"   rÓ   r.   r]   rA   rA   rB   r[   ƒ  s    $zBufferedRandom.seekc                 C   s   | j rt | ¡S t | ¡S d S rQ   )râ   r1   rb   r2   ra   rA   rA   rB   rb   ”  s    
zBufferedRandom.tellNc                 C   s   |d kr|   ¡ }t | |¡S rQ   )rb   r1   rd   re   rA   rA   rB   rd   š  s    zBufferedRandom.truncatec                 C   s    |d krd}|   ¡  t | |¡S rï   )rh   r2   rˆ   r€   rA   rA   rB   rˆ      s    zBufferedRandom.readc                 C   s   |   ¡  t | |¡S rQ   )rh   r2   r�   rŸ   rA   rA   rB   r�   ¦  s    zBufferedRandom.readintoc                 C   s   |   ¡  t | |¡S rQ   )rh   r2   r{   r€   rA   rA   rB   r{   ª  s    zBufferedRandom.peekr   c                 C   s   |   ¡  t | |¡S rQ   )rh   r2   r£   r€   rA   rA   rB   r£   ®  s    zBufferedRandom.read1c                 C   s   |   ¡  t | |¡S rQ   )rh   r2   r§   rŸ   rA   rA   rB   r§   ²  s    zBufferedRandom.readinto1c              	   C   sF   | j r:| j�( | j | jt| j ƒ d¡ |  ¡  W 5 Q R X t | |¡S rƒ   )	r×   rÕ   r=   r[   rØ   r"   rÓ   r1   r—   rŸ   rA   rA   rB   r—   ¶  s
    zBufferedRandom.write)r   )N)N)r   )r   )rM   rN   rO   r*   r²   r[   rb   rd   rˆ   r�   r{   r£   r§   r—   rA   rA   rA   rB   r0   u  s   	




r0   c                       sì   e Zd ZdZdZdZdZdZdZdZ	d0dd„Z
dd	„ Zd
d„ Zdd„ Zdd„ Zd1dd„Zd2dd„Zdd„ Zdd„ Zdd„ Zefdd„Zdd„ Zd3d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 )4r(   r   FNTr   c              
   C   sB  | j dkr*z| jrt | j ¡ W 5 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º| d
¡d	krÂtdƒ‚d|kräd| _d| _tjtjB }nTd|krød| _d}n@d|k�rd| _tjtjB }n"d|k�r8d| _d| _tjtjB }d
|k�rNd| _d| _| j�rj| j�rj|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 }�zT|dk �r:|�sÚtdƒ‚|d k�rôt ||d¡}n0|||ƒ}t|tƒ�stdƒ‚|dk �r$tdƒ‚|}|�s:t |d¡ || _t |¡}	z(t |	j¡�rpt t!j"t #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zt *|dt+¡ W n4 tk
�r }
 z|
j!t!j,k�r ‚ W 5 d }
~
X Y nX W n"   |d k	�r0t |¡ ‚ 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rwaxNrA   )Ú.0ÚcrA   rA   rB   Ú	<genexpr>ê  s     z"FileIO.__init__.<locals>.<genexpr>r
   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-   )-Ú_fdÚ_closefdr   r5   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ÚgetattrrC   r.   Úset_inheritabler+   ÚstatÚS_ISDIRÚst_modeÚIsADirectoryErrorrç   ZEISDIRrè   r/   Ú_blksizer*   Ú_setmoderó   rY   Úlseekr	   ZESPIPE)rI   r6   r4   r;   r   ÚfdÚflagsZnoinherit_flagZowned_fdZfdfstatré   rA   rA   rB   r²   È  s®    




$




ÿ





 ÿ

zFileIO.__init__c                 C   sB   | j dkr>| jr>| js>dd l}|jd| f td| d� |  ¡  d S )Nr   zunclosed file %rr   )Ú
stacklevelÚsource)rõ   rö   rj   r$   r%   ÚResourceWarningr5   )rI   r$   rA   rA   rB   rl   A  s     ÿzFileIO.__del__c                 C   s   t d| jj›d�ƒ‚d S r´   rµ   ra   rA   rA   rB   r¶   H  s    zFileIO.__getstate__c                 C   sp   d| j j| j jf }| jr"d| S z
| j}W n* tk
rV   d|| j| j| jf  Y 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>)	rX   rN   rO   rj   rY   r/   rõ   r4   rö   )rI   Ú
class_namerY   rA   rA   rB   r¹   K  s    ÿ
ÿ
ÿzFileIO.__repr__c                 C   s   | j stdƒ‚d S )NzFile not open for reading)rþ   rV   ra   rA   rA   rB   rs   Y  s    zFileIO._checkReadablec                 C   s   | j stdƒ‚d S )NzFile not open for writing)rû   rV   ro   rA   rA   rB   ru   ]  s    zFileIO._checkWritablec                 C   sT   |   ¡  |  ¡  |d ks |dk r(|  ¡ S zt | j|¡W S  tk
rN   Y d S X d S r’   )rg   rs   rœ   r   rˆ   rõ   ræ   r€   rA   rA   rB   rˆ   a  s    zFileIO.readc                 C   sÞ   |   ¡  |  ¡  t}z6t | jdt¡}t | j¡j}||krH|| d }W n t	k
r^   Y nX t
ƒ }t|ƒ|krˆt|ƒ}|t|tƒ7 }|t|ƒ }zt | j|¡}W n tk
rÄ   |r¾Y qÖY d S X |sÌqÖ||7 }qft|ƒS r`   )rg   rs   r*   r   r  rõ   r   r+   Úst_sizer.   r‡   r"   rÌ   rˆ   ræ   r   )rI   Úbufsizer^   Úendr>   r   rÛ   rA   rA   rB   rœ   q  s2    
zFileIO.readallc                 C   s4   t |ƒ d¡}|  t|ƒ¡}t|ƒ}||d |…< |S r¨   )rª   r«   rˆ   r"   )rI   r   Úmrž   r   rA   rA   rB   r�   ”  s
    zFileIO.readintoc                 C   s<   |   ¡  |  ¡  zt | j|¡W S  tk
r6   Y d S X d S rQ   )rg   ru   r   r—   rõ   ræ   rŸ   rA   rA   rB   r—   œ  s    zFileIO.writec                 C   s*   t |tƒrtdƒ‚|  ¡  t | j||¡S )Nzan integer is required)r   r÷   r    rg   r   r  rõ   r]   rA   rA   rB   r[   ª  s    
zFileIO.seekc                 C   s   |   ¡  t | jdt¡S r’   )rg   r   r  rõ   r   ra   rA   rA   rB   rb   º  s    zFileIO.tellc                 C   s2   |   ¡  |  ¡  |d kr |  ¡ }t | j|¡ |S rQ   )rg   ru   rb   r   Ú	ftruncaterõ   r€   rA   rA   rB   rd   Á  s    zFileIO.truncatec                    s.   | j s*z| jrt | j¡ W 5 tƒ  ¡  X d S rQ   )rj   rÃ   r5   rö   r   rõ   ra   rÄ   rA   rB   r5   Î  s
    zFileIO.closec                 C   sF   |   ¡  | jd kr@z|  ¡  W n tk
r8   d| _Y nX d| _| jS )NFT)rg   Ú	_seekablerb   r.   ra   rA   rA   rB   rn   Û  s    
zFileIO.seekablec                 C   s   |   ¡  | jS rQ   )rg   rþ   ra   rA   rA   rB   rr   ç  s    zFileIO.readablec                 C   s   |   ¡  | jS rQ   )rg   rû   ra   rA   rA   rB   rt   ì  s    zFileIO.writablec                 C   s   |   ¡  | jS rQ   )rg   rõ   ra   rA   rA   rB   r,   ñ  s    zFileIO.filenoc                 C   s   |   ¡  t | j¡S rQ   )rg   r   r)   rõ   ra   rA   rA   rB   r)   ö  s    zFileIO.isattyc                 C   s   | j S rQ   )rö   ra   rA   rA   rB   r;   û  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+rD   Úwb)rú   rþ   r   rû   ra   rA   rA   rB   r4      s    zFileIO.mode)r   TN)N)N)N)"rM   rN   rO   rõ   rú   rþ   rû   r   r  rö   r²   rl   r¶   r¹   rs   ru   rˆ   rœ   r�   r—   r   r[   rb   rd   r5   rn   rr   rt   r,   r)   r™   r;   r4   rÐ   rA   rA   rÄ   rB   r(   ¿  s<   
y

#

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   |   d¡ d S r¢   r\   r€   rA   rA   rB   rˆ     s    zTextIOBase.readc                 C   s   |   d¡ d S r    r\   )rI   ÚsrA   rA   rB   r—   (  s    zTextIOBase.writeNc                 C   s   |   d¡ d S rc   r\   re   rA   rA   rB   rd   ,  s    zTextIOBase.truncatec                 C   s   |   d¡ d S )NrŒ   r\   ra   rA   rA   rB   rŒ   0  s    zTextIOBase.readlinec                 C   s   |   d¡ d S r¬   r\   ra   rA   rA   rB   r­   7  s    zTextIOBase.detachc                 C   s   d S rQ   rA   ra   rA   rA   rB   r8   @  s    zTextIOBase.encodingc                 C   s   d S rQ   rA   ra   rA   rA   rB   ÚnewlinesE  s    zTextIOBase.newlinesc                 C   s   d S rQ   rA   ra   rA   rA   rB   r9   O  s    zTextIOBase.errors)r   )N)rM   rN   rO   rˆ   r—   rd   rŒ   r­   r™   r8   r  r9   rA   rA   rA   rB   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)r9   r   F)ÚcodecsÚIncrementalDecoderr²   Ú	translateÚdecoderÚseennlÚ	pendingcr)rI   r#  r"  r9   rA   rA   rB   r²   `  s
    z"IncrementalNewlineDecoder.__init__Fc                 C   sÔ   | j d kr|}n| j j||d�}| jr<|s.|r<d| }d| _| d¡r\|s\|d d… }d| _| d¡}| d¡| }| d¡| }|  j|o�| j|o˜| jB |o¢| jB O  _| j	rÐ|rÀ| 
dd¡}|rÐ| 
dd¡}|S )N©ÚfinalúFr   Tú
Ú
)r#  Údecoder%  r‰   rù   r$  Ú_LFÚ_CRÚ_CRLFr"  Úreplace)rI   Úinputr'  ÚoutputZcrlfZcrZlfrA   rA   rB   r+  g  s*    

ÿz IncrementalNewlineDecoder.decodec                 C   s@   | j d krd}d}n| j  ¡ \}}|dK }| jr8|dO }||fS )NrÆ   r   r
   )r#  Úgetstater%  )rI   r½   ÚflagrA   rA   rB   r2  †  s    
z"IncrementalNewlineDecoder.getstatec                 C   s8   |\}}t |d@ ƒ| _| jd k	r4| j ||d? f¡ d S rƒ   )Úboolr%  r#  Úsetstate)rI   Ústater½   r3  rA   rA   rB   r5  ‘  s    
z"IncrementalNewlineDecoder.setstatec                 C   s$   d| _ d| _| jd k	r | j ¡  d S )Nr   F)r$  r%  r#  Úresetra   rA   rA   rB   r7  —  s    
zIncrementalNewlineDecoder.resetr
   r   é   c                 C   s
   d| j  S )N)Nr*  r(  )r(  r*  r)  )r*  r)  )r(  r)  )r(  r*  r)  )r$  ra   rA   rA   rB   r  ¡  s    øz"IncrementalNewlineDecoder.newlinesN)r  )F)rM   rN   rO   r²   r+  r2  r5  r7  r,  r-  r.  r™   r  rA   rA   rA   rB   r  Y  s   

r  c                   @   sr  e Zd ZdZdZdNdd„Zdd„ ZdOdd	„Zd
d„ Ze	dd„ ƒZ
e	dd„ ƒZe	dd„ ƒZe	dd„ ƒZe	dd„ ƒZddedddœ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/d0„ Zd1d2„ ZdPd3d4„Zd5d6„ Zd7d8„ Z dQd:d;„Z!d<d=„ Z"d>d?„ Z#dRd@dA„Z$dBdC„ Z%dSdDdE„Z&dTdFdG„Z'dHdI„ Z(dUdJdK„Z)e	dLdM„ ƒZ*dS )Vr3   i   NFc           	   	   C   s  |   |¡ |d krvzt | ¡ ¡}W n ttfk
r<   Y nX |d krvzdd l}W n tk
rj   d}Y nX | d¡}t	|t
ƒsŒtd| ƒ‚t |¡js¨d}t|| ƒ‚|d kr¶d}nt	|t
ƒsÌtd| ƒ‚|| _d| _d| _d | _| j ¡  | _| _t| jd	ƒ| _|  |||||¡ d S )
Nr   ÚasciiFr   zG%r is not a text encoding; use codecs.open() to handle arbitrary codecsr  r   r   r£   )Ú_check_newliner   Údevice_encodingr,   r/   rV   ÚlocaleÚImportErrorZgetpreferredencodingr   r   r#   r   ÚlookupÚ_is_text_encodingÚLookupErrorr»   Ú_decoded_charsÚ_decoded_chars_usedÚ	_snapshotr@   rn   r  Ú_tellingr…   Ú
_has_read1Ú
_configure)	rI   r@   r8   r9   r:   r?   Úwrite_throughr<  rp   rA   rA   rB   r²   Ï  s>    





 ÿzTextIOWrapper.__init__c                 C   s>   |d k	r$t |tƒs$tdt|ƒf ƒ‚|dkr:td|f ƒ‚d S )Nzillegal newline type: %r)Nr   r*  r(  r)  zillegal newline value: %r)r   r   r    Útyper#   )rI   r:   rA   rA   rB   r:  ÷  s    zTextIOWrapper._check_newlinec                 C   s¤   || _ || _d | _d | _d| _| | _|d k| _|| _|dk| _|pHt	j
| _|| _|| _| jr |  ¡ r | j ¡ }|dkr z|  ¡  d¡ W n tk
rž   Y nX d S )Nç        r   r   )Ú	_encodingÚ_errorsÚ_encoderÚ_decoderÚ	_b2cratioÚ_readuniversalÚ_readtranslateÚ_readnlÚ_writetranslater   ÚlinesepÚ_writenlÚ_line_bufferingÚ_write_throughr  rt   r@   rb   Ú_get_encoderr5  r@  )rI   r8   r9   r:   r?   rG  ÚpositionrA   rA   rB   rF  ý  s&    


zTextIOWrapper._configurec                 C   s€   d  | jj| jj¡}z
| j}W n tk
r2   Y nX |d  |¡7 }z
| j}W n tk
r`   Y nX |d  |¡7 }|d  | j¡ S )Nz<{}.{}z name={0!r}z mode={0!r}z encoding={0!r}>)r·   rX   rN   rO   rY   r/   r4   r8   )rI   r>   rY   r4   rA   rA   rB   r¹   !  s    
ÿ

zTextIOWrapper.__repr__c                 C   s   | j S rQ   )rJ  ra   rA   rA   rB   r8   2  s    zTextIOWrapper.encodingc                 C   s   | j S rQ   )rK  ra   rA   rA   rB   r9   6  s    zTextIOWrapper.errorsc                 C   s   | j S rQ   )rU  ra   rA   rA   rB   r?   :  s    zTextIOWrapper.line_bufferingc                 C   s   | j S rQ   )rV  ra   rA   rA   rB   rG  >  s    zTextIOWrapper.write_throughc                 C   s   | j S rQ   )r»   ra   rA   rA   rB   r@   B  s    zTextIOWrapper.buffer)r8   r9   r:   r?   rG  c                C   sÖ   | j d k	r*|d k	s"|d k	s"|tk	r*tdƒ‚|d krH|d krB| j}q^d}nt|tƒs^td| ƒ‚|d krn| j}nt|tƒs„td| ƒ‚|tkr’| j}|  	|¡ |d krª| j
}|d kr¸| j}|  ¡  |  |||||¡ d S )NzPIt is not possible to set the encoding or newline of stream after the first readr  r   r   )rM  ÚEllipsisrV   rK  r   r   r    rJ  rQ  r:  r?   rG  rh   rF  )rI   r8   r9   r:   r?   rG  rA   rA   rB   ÚreconfigureF  s@    
ÿÿþÿ



 ÿzTextIOWrapper.reconfigurec                 C   s   | j rtdƒ‚| jS rv   )rj   r#   r  ra   rA   rA   rB   rn   o  s    zTextIOWrapper.seekablec                 C   s
   | j  ¡ S rQ   )r@   rr   ra   rA   rA   rB   rr   t  s    zTextIOWrapper.readablec                 C   s
   | j  ¡ S rQ   )r@   rt   ra   rA   rA   rB   rt   w  s    zTextIOWrapper.writablec                 C   s   | j  ¡  | j| _d S rQ   )r@   rh   r  rD  ra   rA   rA   rB   rh   z  s    
zTextIOWrapper.flushc                 C   s.   | j d k	r*| js*z|  ¡  W 5 | j  ¡  X d S rQ   )r@   rj   r5   rh   ra   rA   rA   rB   r5   ~  s    zTextIOWrapper.closec                 C   s   | j jS rQ   )r@   rj   ra   rA   rA   rB   rj   …  s    zTextIOWrapper.closedc                 C   s   | j jS rQ   )r@   rY   ra   rA   rA   rB   rY   ‰  s    zTextIOWrapper.namec                 C   s
   | j  ¡ S rQ   )r@   r,   ra   rA   rA   rB   r,   �  s    zTextIOWrapper.filenoc                 C   s
   | j  ¡ S rQ   )r@   r)   ra   rA   rA   rB   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| d| j
¡}| jpr|  ¡ }| |¡}| j |¡ | j	r¤|sœd|kr¤|  ¡  |  d¡ d | _| jrÄ| j ¡  |S )NrÇ   zcan't write %s to text streamr*  r(  r   )rj   r#   r   r   r    rX   rM   r"   rR  rU  rT  r/  rL  rW  Úencoder@   r—   rh   Ú_set_decoded_charsrC  rM  r7  )rI   r  ZlengthZhaslfÚencoderr   rA   rA   rB   r—   “  s(    
ÿ


zTextIOWrapper.writec                 C   s   t  | j¡}|| jƒ| _| jS rQ   )r   ÚgetincrementalencoderrJ  rK  rL  )rI   Zmake_encoderrA   rA   rB   rW  ª  s    zTextIOWrapper._get_encoderc                 C   s2   t  | j¡}|| jƒ}| jr(t|| jƒ}|| _|S rQ   )r   ÚgetincrementaldecoderrJ  rK  rO  r  rP  rM  )rI   Zmake_decoderr#  rA   rA   rB   Ú_get_decoder¯  s    
zTextIOWrapper._get_decoderc                 C   s   || _ d| _d S r’   )rA  rB  )rI   ÚcharsrA   rA   rB   r\  º  s    z TextIOWrapper._set_decoded_charsc                 C   sF   | j }|d kr| j|d … }n| j||| … }|  j t|ƒ7  _ |S rQ   )rB  rA  r"   )rI   r   Úoffsetra  rA   rA   rB   Ú_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)rB  ÚAssertionErrorrë   rA   rA   rB   Ú_rewind_decoded_charsÉ  s    
z#TextIOWrapper._rewind_decoded_charsc                 C   s¢   | j d krtdƒ‚| jr&| j  ¡ \}}| jr<| j | j¡}n| j | j¡}| }| j  	||¡}|  
|¡ |r‚t|ƒt| jƒ | _nd| _| jrœ||| f| _| S )Nz
no decoderrI  )rM  r#   rD  r2  rE  r@   r£   Ú_CHUNK_SIZErˆ   r+  r\  r"   rA  rN  rC  )rI   Ú
dec_bufferÚ	dec_flagsÚinput_chunkÚeofZdecoded_charsrA   rA   rB   Ú_read_chunkÏ  s     

zTextIOWrapper._read_chunkr   c                 C   s(   ||d> B |d> B |d> B t |ƒd> B S )Né@   é€   éÀ   é   )r4  )rI   rX  rh  Úbytes_to_feedÚneed_eofÚchars_to_skiprA   rA   rB   Ú_pack_cookieù  s
    ÿ
ÿzTextIOWrapper._pack_cookiec                 C   sF   t |dƒ\}}t |dƒ\}}t |dƒ\}}t |dƒ\}}|||||fS )Nl            )Údivmod)rI   ZbigintÚrestrX  rh  rp  rq  rr  rA   rA   rB   Ú_unpack_cookie	  s
    zTextIOWrapper._unpack_cookiec              	   C   s@  | j stdƒ‚| jstdƒ‚|  ¡  | j ¡ }| j}|d ksF| jd krX| j	rTt
dƒ‚|S | j\}}|t|ƒ8 }| j}|dkrˆ|  ||¡S | ¡ }�zœt| j| ƒ}d}|dk�r"| d|f¡ t| |d |… ¡ƒ}	|	|k�r| ¡ \}
}|
sþ|}||	8 }�q4|t|
ƒ8 }d}q¦||8 }|d }q¦d}| d|f¡ || }|}|dk�rZ|  ||¡W ¢ØS d}d}d}t|t|ƒƒD ]x}|d7 }|t| |||d … ¡ƒ7 }| ¡ \}}|�sÚ||k�rÚ||7 }||8 }|dd  }}}||k�rt �q�qt|t|jddd	�ƒ7 }d}||k �rtd
ƒ‚|  |||||¡W ¢S | |¡ X d S )Nú!underlying stream is not seekablez(telling position disabled by next() callzpending decoded textr   r
   rÆ   r   Tr&  z'can't reconstruct logical file position)r  rV   rD  r.   rh   r@   rb   rM  rC  rA  rd  r"   rB  rs  r2  r5  r   rN  r+  Úrange)rI   rX  r#  rh  Z
next_inputrr  Zsaved_stateZ
skip_bytesZ	skip_backr   r   ÚdÚ	start_posZstart_flagsZ	bytes_fedrq  Zchars_decodedÚirg  rA   rA   rB   rb   
	  s€    








    ÿzTextIOWrapper.tellc                 C   s$   |   ¡  |d kr|  ¡ }| j |¡S rQ   )rh   rb   r@   rd   re   rA   rA   rB   rd   m	  s    zTextIOWrapper.truncatec                 C   s*   | j d krtdƒ‚|  ¡  | j}d | _|S )Nzbuffer is already detached)r@   r#   rh   r»   )rI   r@   rA   rA   rB   r­   s	  s    
zTextIOWrapper.detachc                    sÄ  ‡ fdd„}ˆ j rtdƒ‚ˆ js(tdƒ‚|tkrN|dkr@tdƒ‚d}ˆ  ¡ }nZ|tkr¨|dkrftdƒ‚ˆ  ¡  ˆ j 	d|¡}ˆ  
d¡ d ˆ _ˆ jrœˆ j ¡  ||ƒ |S |dkr¾td	|f ƒ‚|dk rÔtd
|f ƒ‚ˆ  ¡  ˆ  |¡\}}}}}	ˆ j 	|¡ ˆ  
d¡ d ˆ _|dk�r*ˆ j�r*ˆ j ¡  n@ˆ j�s>|�s>|	�rjˆ j�pLˆ  ¡ ˆ _ˆ j d|f¡ |dfˆ _|	�r¸ˆ j |¡}
ˆ  
ˆ j |
|¡¡ ||
fˆ _tˆ jƒ|	k �r²tdƒ‚|	ˆ _||ƒ |S )Nc                    sH   zˆ j pˆ  ¡ }W n tk
r&   Y nX | dkr<| d¡ n| ¡  d S r’   )rL  rW  r@  r5  r7  )rX  r]  ra   rA   rB   Ú_reset_encoder|	  s    z*TextIOWrapper.seek.<locals>._reset_encoderrÎ   rw  r   z#can't do nonzero cur-relative seeksz#can't do nonzero end-relative seeksr   zunsupported whence (%r)rË   rÆ   z#can't restore logical file position)rj   r#   r  rV   r   rb   r	   rh   r@   r[   r\  rC  rM  r7  rv  r`  r5  rˆ   r+  r"   rA  r.   rB  )rI   Zcookier_   r|  rX  rz  rh  rp  rq  rr  ri  rA   ra   rB   r[   {	  s`    


ÿ

ÿ
zTextIOWrapper.seekc                 C   sØ   |   ¡  |d krd}n4z
|j}W n" tk
rB   t|›d�ƒ‚Y nX |ƒ }| jpV|  ¡ }|dk r�|  ¡ |j| j 	¡ dd� }|  
d¡ d | _|S d}|  |¡}t|ƒ|k rÐ|sÐ|  ¡  }||  |t|ƒ ¡7 }qž|S d S )Nr   r„   r   Tr&  r   F)rs   r†   r/   r    rM  r`  rc  r+  r@   rˆ   r\  rC  r"   rk  )rI   r�   rŠ   r#  r>   rj  rA   rA   rB   rˆ   Æ	  s,    
ÿ


zTextIOWrapper.readc                 C   s(   d| _ |  ¡ }|s$d | _| j| _ t‚|S rm   )rD  rŒ   rC  r  rŽ   r�   rA   rA   rB   r‘   â	  s    zTextIOWrapper.__next__c           	      C   s
  | j rtdƒ‚|d krd}n4z
|j}W n" tk
rH   t|›d�ƒ‚Y nX |ƒ }|  ¡ }d}| jsj|  ¡  d  }}| jr¤| 	d|¡}|dkrš|d }�qÔnt
|ƒ}nÊ| j�rF| 	d|¡}| 	d|¡}|dkrì|dkrÞt
|ƒ}n|d }�qÔnX|dk�r|d }�qÔn@||k �r|d }�qÔn(||d k�r8|d }�qÔn|d }�qÔn(| 	| j¡}|dk�rn|t
| jƒ }�qÔ|dk�rŽt
|ƒ|k�rŽ|}�qÔ|  ¡ �r¨| j�rŽ�q¨�qŽ| j�r¾||  ¡ 7 }qr|  d	¡ d | _|S qr|dk�rì||k�rì|}|  t
|ƒ| ¡ |d |… S )
NrÅ   r   r„   r   r*  r
   r(  r   r   )rj   r#   r†   r/   r    rc  rM  r`  rP  r}   r"   rO  rQ  rk  rA  r\  rC  re  )	rI   r�   rŠ   r�   Ústartr^   ÚendposZnlposZcrposrA   rA   rB   rŒ   ë	  st    







zTextIOWrapper.readlinec                 C   s   | j r| j jS d S rQ   )rM  r  ra   rA   rA   rB   r  H
  s    zTextIOWrapper.newlines)NNNFF)NNNFF)N)r   r   r   r   )N)r   )N)N)+rM   rN   rO   rf  r»   r²   r:  rF  r¹   r™   r8   r9   r?   rG  r@   rY  rZ  rn   rr   rt   rh   r5   rj   rY   r,   r)   r—   rW  r`  r\  rc  re  rk  rs  rv  rb   rd   r­   r[   rˆ   r‘   rŒ   r  rA   rA   rA   rB   r3   ®  sz       ÿ
(    ÿ
$




   þ)



*      ÿ

c

K
	
]r3   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 t	|ƒj
¡ƒ‚|  |¡ |  d¡ d S )Nzutf-8Úsurrogatepass)r8   r9   r:   Fz*initial_value must be str or None, not {0}r   )rÃ   r  r²   rº   rR  r   r   r    r·   rH  rM   r—   r[   )rI   Zinitial_valuer:   rÄ   rA   rB   r²   T
  s    ý
ÿ
zStringIO.__init__c              	   C   sP   |   ¡  | jp|  ¡ }| ¡ }| ¡  z|j| j ¡ dd�W ¢S | |¡ X d S )NTr&  )	rh   rM  r`  r2  r7  r5  r+  r@   rÀ   )rI   r#  Z	old_staterA   rA   rB   rÀ   d
  s    zStringIO.getvaluec                 C   s
   t  | ¡S rQ   )Úobjectr¹   ra   rA   rA   rB   r¹   n
  s    zStringIO.__repr__c                 C   s   d S rQ   rA   ra   rA   rA   rB   r9   s
  s    zStringIO.errorsc                 C   s   d S rQ   rA   ra   rA   rA   rB   r8   w
  s    zStringIO.encodingc                 C   s   |   d¡ d S r¬   r\   ra   rA   rA   rB   r­   {
  s    zStringIO.detach)r   r*  )rM   rN   rO   r²   rÀ   r¹   r™   r9   r8   r­   rÐ   rA   rA   rÄ   rB   r  M
  s   


r  )r   r   NNNTN)7r   Úabcr   rç   r  ÚsysÚ_threadr   rÔ   ÚplatformZmsvcrtr   r  Úior   r   r   r	   rá   r…   Úaddr   Ú	SEEK_DATAr*   ræ   r  Údev_moderk   rC   rF   Ú	open_coder/   rG   rP   rV   r.   r#   ÚABCMetarW   Úregisterr›   Ú_ior(   r¡   r®   rº   r2   r1   rì   r0   r  r!  r  r3   r  rA   rA   rA   rB   Ú<module>   s„   


      ÿ
 [

	
  $=
gh  CiIJ  Y@U     $