???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................a
    XC?hl                    @   sv  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v rTd dl
mZ ndZd dlZd dlmZmZmZmZ h dZee dree j ee j dZeZeed	pejjZeZd5ddZdd Zz
ejZW n e  y   eZY n0 G dd dZ!G dd dZ"z
ej#Z#W n& e yB   G dd de$e%Z#Y n0 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-Z0G d'd( d(e,Z1G d)d* d*e0e/Z2G d+d, d,e)Z+G d-d. d.e'Z3ej3(e3 G d/d0 d0ej4Z5G d1d2 d2e3Z6G d3d4 d4e6Z7dS )6    N)allocate_lock>   cygwinZwin32)setmode)__all__SEEK_SETSEEK_CURSEEK_END>   r         	SEEK_HOLEi    ZgettotalrefcountrTc              	   C   s  t | tst| } t | tttfs0td|  t |tsFtd| t |ts\td| |d urzt |tsztd| |d urt |tstd| t|}|td st|t|krt	d| d|v }	d|v }
d	|v }d
|v }d|v }d|v }d|v }d|v rD|	s"|s"|s"|r*t	ddd l
}|dtd d}
|rX|rXt	d|	|
 | | dkrvt	d|	s|
s|s|st	d|r|d urt	d|r|d urt	d|r|d urt	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| rd}d}|dk rt}zt| j}W n ttfy   Y n0 |dkr|}|dk rt	d |dkr|r|W S t	d!|rt||}n<|	s0|s0|r<t||}n|
rNt||}nt	d"| |}|rj|W S t|||||}|}||_|W S    |   Y n0 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)filer3   	bufferingencodingerrorsnewlineclosefdr   ZmodesZcreatingZreadingZwritingZ	appendingZupdatingtextZbinaryr#   rawresultline_bufferingZbsbuffer r@   */opt/alt/python39/lib64/python3.9/_pyio.pyopen+   s    {








rB   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&   rB   )pathr#   r@   r@   rA   _open_code_with_warning  s
    rE   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)

)rB   __doc__)selfobjtypr@   r@   rA   __get__  s    zDocDescriptor.__get__)N)__name__
__module____qualname__rK   r@   r@   r@   rA   rF     s   rF   c                   @   s   e Zd Ze Zdd ZdS )OpenWrapperc                 O   s   t |i |S N)rB   )clsargskwargsr@   r@   rA   __new__.  s    zOpenWrapper.__new__N)rL   rM   rN   rF   rG   rT   r@   r@   r@   rA   rO   $  s   rO   c                   @   s   e Zd ZdS )UnsupportedOperationN)rL   rM   rN   r@   r@   r@   rA   rU   7  s   rU   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)rU   	__class__rL   )rH   namer@   r@   rA   _unsupported]  s    
zIOBase._unsupportedr   c                 C   s   |  d d S )NseekrY   rH   poswhencer@   r@   rA   rZ   d  s    zIOBase.seekc                 C   s   |  ddS Nr   r	   )rZ   rH   r@   r@   rA   tellt  s    zIOBase.tellNc                 C   s   |  d d S Ntruncater[   rH   r]   r@   r@   rA   rc   x  s    zIOBase.truncatec                 C   s   |    d S rP   _checkClosedr`   r@   r@   rA   flush  s    zIOBase.flushFc                 C   s&   | j s"z|   W d| _ nd| _ 0 d S )NT)_IOBase__closedrg   r`   r@   r@   rA   r4     s    
zIOBase.closec                 C   sT   z
| j }W n ty   Y d S 0 |r(d S tr6|   nz|   W n   Y n0 d S rP   )closedr.   _IOBASE_EMITS_UNRAISABLEr4   )rH   ri   r@   r@   rA   __del__  s    

zIOBase.__del__c                 C   s   dS NFr@   r`   r@   r@   rA   seekable  s    zIOBase.seekablec                 C   s    |   st|d u rdn|d S )NzFile or stream is not seekable.)rm   rU   rH   msgr@   r@   rA   _checkSeekable  s    zIOBase._checkSeekablec                 C   s   dS rl   r@   r`   r@   r@   rA   readable  s    zIOBase.readablec                 C   s    |   st|d u rdn|d S )NzFile or stream is not readable.)rq   rU   rn   r@   r@   rA   _checkReadable  s    zIOBase._checkReadablec                 C   s   dS rl   r@   r`   r@   r@   rA   writable  s    zIOBase.writablec                 C   s    |   st|d u rdn|d S )NzFile or stream is not writable.)rs   rU   rn   r@   r@   rA   _checkWritable  s    zIOBase._checkWritablec                 C   s   | j S rP   )rh   r`   r@   r@   rA   ri     s    zIOBase.closedc                 C   s   | j rt|d u rdn|d S NI/O operation on closed file.ri   r"   rn   r@   r@   rA   rf     s    zIOBase._checkClosedc                 C   s   |    | S rP   re   r`   r@   r@   rA   	__enter__  s    zIOBase.__enter__c                 G   s   |    d S rP   )r4   )rH   rR   r@   r@   rA   __exit__  s    zIOBase.__exit__c                 C   s   |  d d S )Nr+   r[   r`   r@   r@   rA   r+     s    zIOBase.filenoc                 C   s   |    dS rl   re   r`   r@   r@   rA   r(     s    zIOBase.isattyr   c                    s   t  dr fdd}ndd }d u r0dn2z
j}W n  tyZ   tdY n0 | t }dk s|t|k r | }|sq||7 }|drhqqht|S )	Npeekc                     s>     d} | sdS | dd p&t| }dkr:t|}|S )Nr	      
r   )rz   findr!   min)Z	readaheadnrH   sizer@   rA   
nreadahead  s    

z#IOBase.readline.<locals>.nreadaheadc                   S   s   dS Nr	   r@   r@   r@   r@   rA   r   !  s    r    is not an integerr   r{   )	hasattr	__index__r.   r   	bytearrayr!   readendswithr   )rH   r   r   
size_indexresr   r@   r   rA   readline  s&    
	

zIOBase.readlinec                 C   s   |    | S rP   re   r`   r@   r@   rA   __iter__6  s    zIOBase.__iter__c                 C   s   |   }|st|S rP   )r   StopIterationrH   liner@   r@   rA   __next__:  s    zIOBase.__next__c                 C   sP   |d u s|dkrt | S d}g }| D ]&}|| |t|7 }||kr$ qLq$|S Nr   )listappendr!   )rH   hintr~   linesr   r@   r@   rA   	readlines@  s    
zIOBase.readlinesc                 C   s    |    |D ]}| | qd S rP   )rf   write)rH   r   r   r@   r@   rA   
writelinesR  s    zIOBase.writelines)r   )N)N)N)N)N)r   )N)rL   rM   rN   rY   rZ   ra   rc   rg   rh   r4   rk   rm   rp   rq   rr   rs   rt   propertyri   rf   rx   ry   r+   r(   r   r   r   r   r   r@   r@   r@   rA   rV   ;  s4   "


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

*
rV   )	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 u rd}|dk r|   S t| }| |}|d u r>d S ||d = t|S )Nr   r   )readallr   r   readintor   )rH   r   r   r~   r@   r@   rA   r   m  s    

zRawIOBase.readc                 C   s4   t  }| t}|sq ||7 }q|r,t|S |S d S rP   )r   r   r)   r   )rH   r   datar@   r@   rA   r   ~  s    

zRawIOBase.readallc                 C   s   |  d d S )Nr   r[   rH   r   r@   r@   rA   r     s    zRawIOBase.readintoc                 C   s   |  d d S Nr   r[   r   r@   r@   rA   r     s    zRawIOBase.writeN)r   )rL   rM   rN   r   r   r   r   r@   r@   r@   rA   r   _  s   
r   )r'   c                   @   sH   e Zd ZdddZdddZdd Zdd	 Zd
d Zdd Zdd Z	dS )BufferedIOBaser   c                 C   s   |  d d S Nr   r[   r   r@   r@   rA   r     s    zBufferedIOBase.readc                 C   s   |  d d S )Nread1r[   r   r@   r@   rA   r     s    zBufferedIOBase.read1c                 C   s   | j |ddS )NFr   	_readintor   r@   r@   rA   r     s    zBufferedIOBase.readintoc                 C   s   | j |ddS )NTr   r   r   r@   r@   rA   	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   )rH   r   r   r   r~   r@   r@   rA   r     s    

zBufferedIOBase._readintoc                 C   s   |  d d S r   r[   r   r@   r@   rA   r     s    	zBufferedIOBase.writec                 C   s   |  d d S Ndetachr[   r`   r@   r@   rA   r     s    zBufferedIOBase.detachN)r   )r   )
rL   rM   rN   r   r   r   r   r   r   r   r@   r@   r@   rA   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 rP   _rawrH   r<   r@   r@   rA   __init__  s    z_BufferedIOMixin.__init__r   c                 C   s"   | j ||}|dk rtd|S )Nr   z#seek() returned an invalid position)r<   rZ   r-   )rH   r]   r^   Znew_positionr@   r@   rA   rZ     s    z_BufferedIOMixin.seekc                 C   s   | j  }|dk rtd|S )Nr   z#tell() returned an invalid position)r<   ra   r-   rd   r@   r@   rA   ra     s    
z_BufferedIOMixin.tellNc                 C   s4   |    |   |   |d u r(|  }| j|S rP   )rf   rt   rg   ra   r<   rc   rd   r@   r@   rA   rc   %  s    z_BufferedIOMixin.truncatec                 C   s   | j rtd| j  d S )Nflush on closed file)ri   r"   r<   rg   r`   r@   r@   rA   rg   6  s    z_BufferedIOMixin.flushc                 C   s8   | j d ur4| js4z|   W | j   n| j   0 d S rP   )r<   ri   rg   r4   r`   r@   r@   rA   r4   ;  s    
z_BufferedIOMixin.closec                 C   s*   | j d u rtd|   | j}d | _|S )Nzraw stream already detached)r<   r"   rg   r   r   r@   r@   rA   r   C  s    
z_BufferedIOMixin.detachc                 C   s
   | j  S rP   )r<   rm   r`   r@   r@   rA   rm   M  s    z_BufferedIOMixin.seekablec                 C   s   | j S rP   r   r`   r@   r@   rA   r<   P  s    z_BufferedIOMixin.rawc                 C   s   | j jS rP   )r<   ri   r`   r@   r@   rA   ri   T  s    z_BufferedIOMixin.closedc                 C   s   | j jS rP   )r<   rX   r`   r@   r@   rA   rX   X  s    z_BufferedIOMixin.namec                 C   s   | j jS rP   )r<   r3   r`   r@   r@   rA   r3   \  s    z_BufferedIOMixin.modec                 C   s   t d| jjdd S Nzcannot pickle z objectr   rW   rL   r`   r@   r@   rA   __getstate__`  s    z_BufferedIOMixin.__getstate__c                 C   sL   | j j}| j j}z
| j}W n ty8   d|| Y S 0 d|||S d S )Nz<{}.{}>z<{}.{} name={!r}>)rW   rM   rN   rX   r.   format)rH   modnameZclsnamerX   r@   r@   rA   __repr__c  s    
z_BufferedIOMixin.__repr__c                 C   s
   | j  S rP   )r<   r+   r`   r@   r@   rA   r+   o  s    z_BufferedIOMixin.filenoc                 C   s
   | j  S rP   )r<   r(   r`   r@   r@   rA   r(   r  s    z_BufferedIOMixin.isatty)r   )N)rL   rM   rN   r   rZ   ra   rc   rg   r4   r   rm   r   r<   ri   rX   r3   r   r   r+   r(   r@   r@   r@   rA   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 ur||7 }|| _d| _d S r   )r   _buffer_pos)rH   Zinitial_bytesbufr@   r@   rA   r   ~  s
    zBytesIO.__init__c                 C   s   | j rtd| j S )Nz__getstate__ on closed file)ri   r"   __dict__copyr`   r@   r@   rA   r     s    zBytesIO.__getstate__c                 C   s   | j rtdt| jS )Nzgetvalue on closed file)ri   r"   r   r   r`   r@   r@   rA   getvalue  s    zBytesIO.getvaluec                 C   s   | j rtdt| jS )Nzgetbuffer on closed file)ri   r"   r   r   r`   r@   r@   rA   	getbuffer  s    zBytesIO.getbufferc                    s"   | j d ur| j   t   d S rP   )r   clearsuperr4   r`   rW   r@   rA   r4     s    

zBytesIO.closer   c                 C   s   | j rtd|d u rd}n2z
|j}W n  tyF   t|dY n0 | }|dk r`t| j}t| j| jkrtdS tt| j| j| }| j| j| }|| _t	|S )Nread from closed filer   r   r       )
ri   r"   r   r.   r   r!   r   r   r}   r   )rH   r   r   Znewposr   r@   r@   rA   r     s"    

zBytesIO.readc                 C   s
   |  |S rP   )r   r   r@   r@   rA   r     s    zBytesIO.read1c                 C   s   | j rtdt|tr tdt|}|j}W d    n1 sD0    Y  |dkrZdS | j}|t| j	krd|t| j	  }|  j	|7  _	|| j	||| < |  j|7  _|S )Nwrite to closed file can't write str to binary streamr       )
ri   r"   r   r   r   r   nbytesr   r!   r   )rH   r   Zviewr~   r]   Zpaddingr@   r@   rA   r     s    

$zBytesIO.writer   c                 C   s   | j rtdz
|j}W n  ty8   t|dY n0 | }|dkrf|dk r^td|f || _nD|dkrtd| j| | _n(|dkrtdt| j| | _ntd| jS )Nzseek on closed filer   r   negative seek position %rr	   r
   zunsupported whence value)	ri   r"   r   r.   r   r   maxr!   r   )rH   r]   r^   	pos_indexr@   r@   rA   rZ     s"    
zBytesIO.seekc                 C   s   | j rtd| jS )Ntell on closed file)ri   r"   r   r`   r@   r@   rA   ra     s    zBytesIO.tellc                 C   sv   | j rtd|d u r| j}nHz
|j}W n  tyH   t|dY n0 | }|dk rftd|f | j|d = |S )Nztruncate on closed filer   r   znegative truncate position %r)ri   r"   r   r   r.   r   r   )rH   r]   r   r@   r@   rA   rc     s    
zBytesIO.truncatec                 C   s   | j rtddS Nrv   Trw   r`   r@   r@   rA   rq     s    zBytesIO.readablec                 C   s   | j rtddS r   rw   r`   r@   r@   rA   rs     s    zBytesIO.writablec                 C   s   | j rtddS r   rw   r`   r@   r@   rA   rm     s    zBytesIO.seekable)N)r   )r   )r   )N)rL   rM   rN   r   r   r   r   r   r4   r   r   r   rZ   ra   rc   rq   rs   rm   __classcell__r@   r@   r   rA   r   v  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 ) r1   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)	rq   r-   r   r   r"   buffer_size_reset_read_bufLock
_read_lockrH   r<   r   r@   r@   rA   r     s    zBufferedReader.__init__c                 C   s
   | j  S rP   )r<   rq   r`   r@   r@   rA   rq     s    zBufferedReader.readablec                 C   s   d| _ d| _d S )Nr   r   )	_read_buf	_read_posr`   r@   r@   rA   r      s    zBufferedReader._reset_read_bufNc                 C   sL   |d ur|dk rt d| j | |W  d    S 1 s>0    Y  d S )Nr   zinvalid number of bytes to read)r"   r   _read_unlockedr   r@   r@   rA   r   $  s    zBufferedReader.readc                 C   s  d}d}| j }| j}|d u s$|dkr|   t| jdrj| j }|d u rZ||d  pXd S ||d  | S ||d  g}d}| j }||v r|}q|t|7 }|| q|d	|p|S t|| }	||	kr|  j|7  _||||  S ||d  g}t
| j|}
|	|k rH| j|
}||v 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}   )rH   r~   Z
nodata_valZempty_valuesr   r]   chunkZchunksZcurrent_sizeavailZwantedoutr@   r@   rA   r   1  sL    





zBufferedReader._read_unlockedr   c                 C   s4   | j  | |W  d    S 1 s&0    Y  d S rP   )r   _peek_unlockedr   r@   r@   rA   rz   e  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   )rH   r~   ZwantZhaveZto_readZcurrentr@   r@   rA   r   o  s    
zBufferedReader._peek_unlockedr   c                 C   sj   |dk r| j }|dkrdS | j6 | d | t|t| j| j W  d    S 1 s\0    Y  d S )Nr   r   r	   )r   r   r   r   r}   r!   r   r   r   r@   r@   rA   r   z  s    
zBufferedReader.read1c                 C   s   t |tst|}|jdkr dS |d}d}| j |t|k rtt| j| j t|}|r| j| j| j|  |||| < |  j|7  _||7 }|t|krqt|| | j	kr| j
||d  }|sq||7 }n|r|s| dsq|r6|r6qq6W d    n1 s0    Y  |S )Nr   r   r	   )r   r   r   r   r   r!   r}   r   r   r   r<   r   r   )rH   r   r   writtenr   r~   r@   r@   rA   r     s6    




$zBufferedReader._readintoc                 C   s   t | t| j | j S rP   )r   ra   r!   r   r   r`   r@   r@   rA   ra     s    zBufferedReader.tellc                 C   sp   |t vrtd| jF |dkr4|t| j| j 8 }t| ||}|   |W  d    S 1 sb0    Y  d S )Ninvalid whence valuer	   )	valid_seek_flagsr"   r   r!   r   r   r   rZ   r   r\   r@   r@   rA   rZ     s    zBufferedReader.seek)N)N)r   )r   )r   )r   )rL   rM   rN   r)   r   rq   r   r   r   rz   r   r   r   ra   rZ   r@   r@   r@   rA   r1     s   

4



.r1   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 )r0   c                 C   sF   |  stdt| | |dkr,td|| _t | _t | _	d S )Nz "raw" argument must be writable.r   r   )
rs   r-   r   r   r"   r   r   
_write_bufr   _write_lockr   r@   r@   rA   r     s    zBufferedWriter.__init__c                 C   s
   | j  S rP   )r<   rs   r`   r@   r@   rA   rs     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rz| 	  W nn ty } zVt| j| jkrt| j| j }||8 }| jd | j | _t|j|j|W Y d }~n
d }~0 0 |W  d    S 1 s
0    Y  d S )Nr   r   )r   r   r   r   ri   r"   r!   r   r   _flush_unlockedextendBlockingIOErrorerrnostrerror)rH   r   Zbeforer   eZoverager@   r@   rA   r     s(    

&zBufferedWriter.writeNc                 C   sP   | j 6 |   |d u r"| j }| j|W  d    S 1 sB0    Y  d S rP   )r   r   r<   ra   rc   rd   r@   r@   rA   rc     s
    
zBufferedWriter.truncatec                 C   s2   | j  |   W d    n1 s$0    Y  d S rP   )r   r   r`   r@   r@   rA   rg     s    zBufferedWriter.flushc                 C   s   | j rtd| jrz| j| j}W n ty@   tdY n0 |d u rXttjdd|t	| jksn|dk rvt
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)ri   r"   r   r<   r   r   RuntimeErrorr   ZEAGAINr!   r-   rH   r~   r@   r@   rA   r     s    zBufferedWriter._flush_unlockedc                 C   s   t | t| j S rP   )r   ra   r!   r   r`   r@   r@   rA   ra     s    zBufferedWriter.tellr   c                 C   sP   |t vrtd| j& |   t| ||W  d    S 1 sB0    Y  d S )Nr   )r   r"   r   r   r   rZ   r\   r@   r@   rA   rZ     s
    zBufferedWriter.seekc                 C   s   | j 0 | jd u s| jr(W d    d S W d    n1 s<0    Y  z<|   W | j  | j  W d    q1 sx0    Y  n2| j  | j  W d    n1 s0    Y  0 d S rP   )r   r<   ri   rg   r4   r`   r@   r@   rA   r4      s    .
*zBufferedWriter.close)N)r   )rL   rM   rN   r)   r   rs   r   rc   rg   r   ra   rZ   r4   r@   r@   r@   rA   r0     s   	

r0   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.)rq   r-   rs   r1   readerr0   writer)rH   r   r   r   r@   r@   rA   r   @  s    zBufferedRWPair.__init__r   c                 C   s   |d u rd}| j |S Nr   )r   r   r   r@   r@   rA   r   N  s    zBufferedRWPair.readc                 C   s   | j |S rP   )r   r   r   r@   r@   rA   r   S  s    zBufferedRWPair.readintoc                 C   s   | j |S rP   )r   r   r   r@   r@   rA   r   V  s    zBufferedRWPair.writer   c                 C   s   | j |S rP   )r   rz   r   r@   r@   rA   rz   Y  s    zBufferedRWPair.peekc                 C   s   | j |S rP   )r   r   r   r@   r@   rA   r   \  s    zBufferedRWPair.read1c                 C   s   | j |S rP   )r   r   r   r@   r@   rA   r   _  s    zBufferedRWPair.readinto1c                 C   s
   | j  S rP   )r   rq   r`   r@   r@   rA   rq   b  s    zBufferedRWPair.readablec                 C   s
   | j  S rP   )r   rs   r`   r@   r@   rA   rs   e  s    zBufferedRWPair.writablec                 C   s
   | j  S rP   )r   rg   r`   r@   r@   rA   rg   h  s    zBufferedRWPair.flushc                 C   s*   z| j   W | j  n| j  0 d S rP   )r   r4   r   r`   r@   r@   rA   r4   k  s    zBufferedRWPair.closec                 C   s   | j  p| j S rP   )r   r(   r   r`   r@   r@   rA   r(   q  s    zBufferedRWPair.isattyc                 C   s   | j jS rP   )r   ri   r`   r@   r@   rA   ri   t  s    zBufferedRWPair.closedN)r   )r   )r   )rL   rM   rN   r)   r   r   r   r   rz   r   r   rq   rs   rg   r4   r(   r   ri   r@   r@   r@   rA   r   0  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 )r/   c                 C   s(   |   t| || t| || d S rP   )rp   r1   r   r0   r   r@   r@   rA   r     s    zBufferedRandom.__init__r   c                 C   s   |t vrtd|   | jr^| j* | j| jt| j d W d    n1 sT0    Y  | j||}| j | 	  W d    n1 s0    Y  |dk rt
d|S )Nr   r	   r   z seek() returned invalid position)r   r"   rg   r   r   r<   rZ   r   r!   r   r-   r\   r@   r@   rA   rZ     s    8&zBufferedRandom.seekc                 C   s   | j rt| S t| S d S rP   )r   r0   ra   r1   r`   r@   r@   rA   ra     s    
zBufferedRandom.tellNc                 C   s   |d u r|   }t| |S rP   )ra   r0   rc   rd   r@   r@   rA   rc     s    zBufferedRandom.truncatec                 C   s    |d u rd}|    t| |S r   )rg   r1   r   r   r@   r@   rA   r     s    zBufferedRandom.readc                 C   s   |    t| |S rP   )rg   r1   r   r   r@   r@   rA   r     s    zBufferedRandom.readintoc                 C   s   |    t| |S rP   )rg   r1   rz   r   r@   r@   rA   rz     s    zBufferedRandom.peekr   c                 C   s   |    t| |S rP   )rg   r1   r   r   r@   r@   rA   r     s    zBufferedRandom.read1c                 C   s   |    t| |S rP   )rg   r1   r   r   r@   r@   rA   r     s    zBufferedRandom.readinto1c                 C   sZ   | j rN| j2 | j| jt| j  d |   W d    n1 sD0    Y  t| |S r   )	r   r   r<   rZ   r   r!   r   r0   r   r   r@   r@   rA   r     s
    &zBufferedRandom.write)r   )N)N)r   )r   )rL   rM   rN   r)   r   rZ   ra   rc   r   r   rz   r   r   r   r@   r@   r@   rA   r/   y  s   	




r/   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   sH  | j dkr0z| jrt| j  W d| _ nd| _ 0 t|trBtdt|trb|}|dk rftdnd}t|t	s~td|f t
|t
dkstd|f tdd |D d	ks|d
d	krtdd|v rd| _d| _tjtjB }nTd|v rd| _d}n@d|v rd| _tjtjB }n"d|v r>d| _d| _tjtjB }d
|v rTd| _d| _| jrp| jrp|tjO }n| jr|tjO }n
|tjO }|ttddO }ttddpttdd}||O }d }zT|dk r@|std|d u rt||d}n0|||}t|tstd|dk r*td|}|s@t|d || _t|}	z(t|	jrvt t!j"t#t!j"|W n t$y   Y n0 t|	dd| _%| j%d	krt&| _%t'rt'|tj( || _)| jrzt*|dt+ W n6 ty }
 z|
j!t!j,kr W Y d }
~
n
d }
~
0 0 W n"   |d ur6t|  Y n0 || _ d S )Nr   r   z$integer argument expected, got floatznegative file descriptorzinvalid mode: %szxrwab+c                 s   s   | ]}|d v V  qdS )ZrwaxNr@   ).0cr@   r@   rA   	<genexpr>  r   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   r4   r   floatr   r   r"   r   r    sumcount_created	_writableO_EXCLO_CREAT	_readableO_TRUNC
_appendingO_APPENDO_RDWRO_RDONLYO_WRONLYgetattrrB   r-   set_inheritabler*   statS_ISDIRst_modeIsADirectoryErrorr   ZEISDIRr   r.   _blksizer)   _setmoder   rX   lseekr   ZESPIPE)rH   r5   r3   r:   r   fdflagsZnoinherit_flagZowned_fdZfdfstatr   r@   r@   rA   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   ri   r#   r$   ResourceWarningr4   )rH   r#   r@   r@   rA   rk   E  s    zFileIO.__del__c                 C   s   t d| jjdd S r   r   r`   r@   r@   rA   r   L  s    zFileIO.__getstate__c                 C   sn   d| j j| j jf }| jr"d| S z
| j}W n( tyT   d|| j| j| jf  Y S 0 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>)	rW   rM   rN   ri   rX   r.   r   r3   r   )rH   
class_namerX   r@   r@   rA   r   O  s    

zFileIO.__repr__c                 C   s   | j stdd S )NzFile not open for reading)r   rU   r`   r@   r@   rA   rr   ]  s    zFileIO._checkReadablec                 C   s   | j stdd S )NzFile not open for writing)r   rU   rn   r@   r@   rA   rt   a  s    zFileIO._checkWritablec                 C   sR   |    |   |d u s |dk r(|  S zt| j|W S  tyL   Y d S 0 d S r   )rf   rr   r   r   r   r   r   r   r@   r@   rA   r   e  s    zFileIO.readc                 C   s   |    |   t}z6t| jdt}t| jj}||krH|| d }W n t	y\   Y n0 t
 }t||krt|}|t|t7 }|t| }zt| j|}W n ty   |rY qY d S 0 |sq||7 }qdt|S r_   )rf   rr   r)   r   r  r   r   r*   st_sizer-   r   r!   r   r   r   r   )rH   bufsizer]   endr=   r~   r   r@   r@   rA   r   u  s2    
zFileIO.readallc                 C   s4   t |d}| t|}t|}||d |< |S r   )r   r   r   r!   )rH   r   mr   r~   r@   r@   rA   r     s
    zFileIO.readintoc                 C   s:   |    |   zt| j|W S  ty4   Y d S 0 d S rP   )rf   rt   r   r   r   r   r   r@   r@   rA   r     s    zFileIO.writec                 C   s*   t |trtd|   t| j||S )Nzan integer is required)r   r   r   rf   r   r  r   r\   r@   r@   rA   rZ     s    
zFileIO.seekc                 C   s   |    t| jdtS r   )rf   r   r  r   r   r`   r@   r@   rA   ra     s    zFileIO.tellc                 C   s2   |    |   |d u r |  }t| j| |S rP   )rf   rt   ra   r   	ftruncater   r   r@   r@   rA   rc     s    zFileIO.truncatec                    s8   | j s4z | jrt| j W t   nt   0 d S rP   )ri   r   r   r4   r   r   r`   r   r@   rA   r4     s
    zFileIO.closec                 C   sD   |    | jd u r>z|   W n ty6   d| _Y n0 d| _| jS )NFT)rf   	_seekablera   r-   r`   r@   r@   rA   rm     s    
zFileIO.seekablec                 C   s   |    | jS rP   )rf   r   r`   r@   r@   rA   rq     s    zFileIO.readablec                 C   s   |    | jS rP   )rf   r   r`   r@   r@   rA   rs     s    zFileIO.writablec                 C   s   |    | jS rP   )rf   r   r`   r@   r@   rA   r+     s    zFileIO.filenoc                 C   s   |    t| jS rP   )rf   r   r(   r   r`   r@   r@   rA   r(     s    zFileIO.isattyc                 C   s   | j S rP   )r   r`   r@   r@   rA   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+rC   wb)r   r   r   r   r`   r@   r@   rA   r3     s    zFileIO.mode)r   TN)N)N)N)"rL   rM   rN   r   r   r   r   r   r  r   r   rk   r   r   rr   rt   r   r   r   r   r   rZ   ra   rc   r4   rm   rq   rs   r+   r(   r   r:   r3   r   r@   r@   r   rA   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   r@   r@   rA   r   "  s    zTextIOBase.readc                 C   s   |  d d S r   r[   )rH   sr@   r@   rA   r   ,  s    zTextIOBase.writeNc                 C   s   |  d d S rb   r[   rd   r@   r@   rA   rc   0  s    zTextIOBase.truncatec                 C   s   |  d d S )Nr   r[   r`   r@   r@   rA   r   4  s    zTextIOBase.readlinec                 C   s   |  d d S r   r[   r`   r@   r@   rA   r   ;  s    zTextIOBase.detachc                 C   s   d S rP   r@   r`   r@   r@   rA   r7   D  s    zTextIOBase.encodingc                 C   s   d S rP   r@   r`   r@   r@   rA   newlinesI  s    zTextIOBase.newlinesc                 C   s   d S rP   r@   r`   r@   r@   rA   r8   S  s    zTextIOBase.errors)r   )N)rL   rM   rN   r   r   rc   r   r   r   r7   r  r8   r@   r@   r@   rA   r    s   


	

	r  c                   @   sP   e Zd ZdddZdddZdd Zd	d
 Zdd ZdZdZ	dZ
edd ZdS )IncrementalNewlineDecoderstrictc                 C   s,   t jj| |d || _|| _d| _d| _d S )N)r8   r   F)codecsIncrementalDecoderr   	translatedecoderseennl	pendingcr)rH   r#  r"  r8   r@   r@   rA   r   d  s
    z"IncrementalNewlineDecoder.__init__Fc                 C   s   | j d u 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)rH   inputr'  outputZcrlfZcrZlfr@   r@   rA   r+  k  s*    

z IncrementalNewlineDecoder.decodec                 C   s@   | j d u rd}d}n| j  \}}|dK }| jr8|dO }||fS )Nr   r   r	   )r#  getstater%  )rH   r   flagr@   r@   rA   r2    s    
z"IncrementalNewlineDecoder.getstatec                 C   s8   |\}}t |d@ | _| jd ur4| j||d? f d S r   )boolr%  r#  setstate)rH   stater   r3  r@   r@   rA   r5    s    
z"IncrementalNewlineDecoder.setstatec                 C   s$   d| _ d| _| jd ur | j  d S )Nr   F)r$  r%  r#  resetr`   r@   r@   rA   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$  r`   r@   r@   rA   r    s    z"IncrementalNewlineDecoder.newlinesN)r  )F)rL   rM   rN   r   r+  r2  r5  r7  r,  r-  r.  r   r  r@   r@   r@   rA   r  ]  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 )Vr2   i   NFc           	   	   C   s$  |  | |d u rrzt| }W n ttfy:   Y n0 |d u rrzdd l}W n tyf   d}Y n0 |d}t	|t
std| t|jsd}t|| |d u rd}n$t	|t
std| trt| || _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.   rU   localeImportErrorZgetpreferredencodingr   r   r"   r   lookup_is_text_encodingLookupError_CHECK_ERRORSlookup_errorr   _decoded_chars_decoded_chars_used	_snapshotr?   rm   r  _tellingr   
_has_read1
_configure)	rH   r?   r7   r8   r9   r>   write_throughr<  ro   r@   r@   rA   r     s@    






zTextIOWrapper.__init__c                 C   s>   |d ur$t |ts$tdt|f |dvr:td|f d S )Nzillegal newline type: %r)Nr   r*  r(  r)  zillegal newline value: %r)r   r   r   typer"   )rH   r9   r@   r@   rA   r:    s    zTextIOWrapper._check_newlinec                 C   s   || _ || _d | _d | _d| _| | _|d u | _|| _|dk| _|pHt	j
| _|| _|| _| jr|  r| j }|dkrz|  d W n ty   Y n0 d S )N        r   r   )	_encoding_errors_encoder_decoder	_b2cratio_readuniversal_readtranslate_readnl_writetranslater   linesep_writenl_line_buffering_write_throughr  rs   r?   ra   _get_encoderr5  r@  )rH   r7   r8   r9   r>   rI  positionr@   r@   rA   rH    s&    


zTextIOWrapper._configurec                 C   s|   d | jj| jj}z
| j}W n ty0   Y n0 |d |7 }z
| j}W n ty\   Y n0 |d |7 }|d | j S )Nz<{}.{}z name={0!r}z mode={0!r}z encoding={0!r}>)r   rW   rM   rN   rX   r.   r3   r7   )rH   r=   rX   r3   r@   r@   rA   r   '  s    


zTextIOWrapper.__repr__c                 C   s   | j S rP   )rL  r`   r@   r@   rA   r7   8  s    zTextIOWrapper.encodingc                 C   s   | j S rP   )rM  r`   r@   r@   rA   r8   <  s    zTextIOWrapper.errorsc                 C   s   | j S rP   )rW  r`   r@   r@   rA   r>   @  s    zTextIOWrapper.line_bufferingc                 C   s   | j S rP   )rX  r`   r@   r@   rA   rI  D  s    zTextIOWrapper.write_throughc                 C   s   | j S rP   )r   r`   r@   r@   rA   r?   H  s    zTextIOWrapper.buffer)r7   r8   r9   r>   rI  c                C   s   | j d ur*|d us"|d us"|tur*td|d u rH|d u rB| j}q^d}nt|ts^td| |d u rn| j}nt|tstd| |tu r| j}| 	| |d u r| j
}|d u r| j}|   | ||||| d S )NzPIt is not possible to set the encoding or newline of stream after the first readr  r   r   )rO  EllipsisrU   rM  r   r   r   rL  rS  r:  r>   rI  rg   rH  )rH   r7   r8   r9   r>   rI  r@   r@   rA   reconfigureL  s>    




zTextIOWrapper.reconfigurec                 C   s   | j rtd| jS ru   )ri   r"   r  r`   r@   r@   rA   rm   u  s    zTextIOWrapper.seekablec                 C   s
   | j  S rP   )r?   rq   r`   r@   r@   rA   rq   z  s    zTextIOWrapper.readablec                 C   s
   | j  S rP   )r?   rs   r`   r@   r@   rA   rs   }  s    zTextIOWrapper.writablec                 C   s   | j   | j| _d S rP   )r?   rg   r  rF  r`   r@   r@   rA   rg     s    
zTextIOWrapper.flushc                 C   s8   | j d ur4| js4z|   W | j   n| j   0 d S rP   )r?   ri   rg   r4   r`   r@   r@   rA   r4     s    
zTextIOWrapper.closec                 C   s   | j jS rP   )r?   ri   r`   r@   r@   rA   ri     s    zTextIOWrapper.closedc                 C   s   | j jS rP   )r?   rX   r`   r@   r@   rA   rX     s    zTextIOWrapper.namec                 C   s
   | j  S rP   )r?   r+   r`   r@   r@   rA   r+     s    zTextIOWrapper.filenoc                 C   s
   | j  S rP   )r?   r(   r`   r@   r@   rA   r(     s    zTextIOWrapper.isattyc                 C   s   | j rtdt|ts(td|jj t|}| js<| j	oBd|v }|rf| jrf| j
dkrf|d| j
}| jpr|  }||}| j| | j	r|sd|v r|   | d d | _| jr| j  |S )Nr   zcan't write %s to text streamr*  r(  r   )ri   r"   r   r   r   rW   rL   r!   rT  rW  rV  r/  rN  rY  encoder?   r   rg   _set_decoded_charsrE  rO  r7  )rH   r  ZlengthZhaslfencoderr   r@   r@   rA   r     s(    



zTextIOWrapper.writec                 C   s   t | j}|| j| _| jS rP   )r   getincrementalencoderrL  rM  rN  )rH   Zmake_encoderr@   r@   rA   rY    s    zTextIOWrapper._get_encoderc                 C   s2   t | j}|| j}| jr(t|| j}|| _|S rP   )r   getincrementaldecoderrL  rM  rQ  r  rR  rO  )rH   Zmake_decoderr#  r@   r@   rA   _get_decoder  s    
zTextIOWrapper._get_decoderc                 C   s   || _ d| _d S r   )rC  rD  )rH   charsr@   r@   rA   r^    s    z TextIOWrapper._set_decoded_charsc                 C   sF   | j }|d u r| j|d  }n| j|||  }|  j t|7  _ |S rP   )rD  rC  r!   )rH   r~   offsetrc  r@   r@   rA   _get_decoded_chars  s    z TextIOWrapper._get_decoded_charsc                 C   s$   | j |k rtd|  j |8  _ d S )Nz"rewind decoded_chars out of bounds)rD  AssertionErrorr   r@   r@   rA   _rewind_decoded_chars  s    
z#TextIOWrapper._rewind_decoded_charsc                 C   s   | j d u rtd| jr&| j  \}}| jr<| j| j}n| j| j}| }| j 	||}| 
| |rt|t| j | _nd| _| jr||| f| _| S )Nz
no decoderrK  )rO  r"   rF  r2  rG  r?   r   _CHUNK_SIZEr   r+  r^  r!   rC  rP  rE  )rH   
dec_buffer	dec_flagsinput_chunkeofZdecoded_charsr@   r@   rA   _read_chunk  s     

zTextIOWrapper._read_chunkr   c                 C   s(   ||d> B |d> B |d> B t |d> B S )N@            )r4  )rH   rZ  rj  bytes_to_feedneed_eofchars_to_skipr@   r@   rA   _pack_cookie  s
    
zTextIOWrapper._pack_cookiec                 C   sJ   t |d\}}t |d\}}t |d\}}t |d\}}|||t||fS )Nl            )divmodr4  )rH   ZbigintrestrZ  rj  rr  rs  rt  r@   r@   rA   _unpack_cookie		  s
    zTextIOWrapper._unpack_cookiec              	   C   sP  | j std| jstd|   | j }| j}|d u sF| jd u rX| j	rTt
d|S | j\}}|t|8 }| j}|dkr| ||S | }zt| j| }d}|dkr"|d|f t||d | }	|	|kr| \}
}|
s|}||	8 }q4|t|
8 }d}q||8 }|d }qd}|d|f || }|}|dkrb| ||W || S d}d}d}t|t|D ]x}|d7 }|t||||d  7 }| \}}|s||kr||7 }||8 }|dd  }}}||kr| q"q||t|jdd	d
7 }d	}||k r"td| |||||W || S || 0 d S )N!underlying stream is not seekablez(telling position disabled by next() callzpending decoded textr   r	   r   r
   FTr&  z'can't reconstruct logical file position)r  rU   rF  r-   rg   r?   ra   rO  rE  rC  rf  r!   rD  ru  r2  r   rP  r5  r+  range)rH   rZ  r#  rj  Z
next_inputrt  Zsaved_stateZ
skip_bytesZ	skip_backr~   r   d	start_posZstart_flagsZ	bytes_fedrs  Zchars_decodediri  r@   r@   rA   ra   	  s    





 





zTextIOWrapper.tellc                 C   s$   |    |d u r|  }| j|S rP   )rg   ra   r?   rc   rd   r@   r@   rA   rc   s	  s    zTextIOWrapper.truncatec                 C   s*   | j d u rtd|   | j}d | _|S )Nzbuffer is already detached)r?   r"   rg   r   )rH   r?   r@   r@   rA   r   y	  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rtd	|f |dk rt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 rtd|	 _|| |S )Nc                    sF   z j p  }W n ty$   Y n0 | dkr:|d n|  d S r   )rN  rY  r@  r5  r7  )rZ  r_  r`   r@   rA   _reset_encoder	  s    z*TextIOWrapper.seek.<locals>._reset_encoderr   ry  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)ri   r"   r  rU   r   ra   r   rg   r?   rZ   r^  rE  rO  r7  rx  rb  r5  r   r+  r!   rC  r-   rD  )rH   Zcookier^   r~  rZ  r|  rj  rr  rs  rt  rk  r@   r`   rA   rZ   	  s`    





zTextIOWrapper.seekc                 C   s   |    |d u rd}n2z
|j}W n  ty@   t|dY n0 | }| jpT|  }|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)rr   r   r.   r   rO  rb  re  r+  r?   r   r^  rE  r!   rm  )rH   r   r   r#  r=   rl  r@   r@   rA   r   	  s,    



zTextIOWrapper.readc                 C   s(   d| _ |  }|s$d | _| j| _ t|S rl   )rF  r   rE  r  r   r   r@   r@   rA   r   	  s    zTextIOWrapper.__next__c           	      C   s  | j rtd|d u rd}n2z
|j}W n  tyF   t|dY n0 | }|  }d}| jsh|   d  }}| jr|	d|}|dkr|d }qnt
|}n| jrD|	d|}|	d|}|dkr|dkrt
|}n|d }qnX|dkr|d }qn@||k r|d }qn(||d kr6|d }qn|d }qn(|	| j}|dkrl|t
| j }q|dkrt
||kr|}q|  r| jrqq| jr||  7 }qp| d	 d | _|S qp|dkr||kr|}| t
||  |d | S )
Nr   r   r   r   r*  r	   r(  r
   r   )ri   r"   r   r.   r   re  rO  rb  rR  r|   r!   rQ  rS  rm  rC  r^  rE  rg  )	rH   r   r   r   startr]   endposZnlposZcrposr@   r@   rA   r   	  st    







zTextIOWrapper.readlinec                 C   s   | j r| j jS d S rP   )rO  r  r`   r@   r@   rA   r  N
  s    zTextIOWrapper.newlines)NNNFF)NNNFF)N)r   r   Fr   )N)r   )N)N)+rL   rM   rN   rh  r   r   r:  rH  r   r   r7   r8   r>   rI  r?   r[  r\  rm   rq   rs   rg   r4   ri   rX   r+   r(   r   rY  rb  r^  re  rg  rm  ru  rx  ra   rc   r   rZ   r   r   r   r  r@   r@   r@   rA   r2     sl     
*  
$




)



*  

c

K
	
]r2   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 u r(d| _|d urbt|tsNtdt	|j
| | | d d S )Nzutf-8surrogatepass)r7   r8   r9   Fz*initial_value must be str or None, not {0}r   )r   r  r   r   rT  r   r   r   r   rJ  rL   r   rZ   )rH   Zinitial_valuer9   r   r@   rA   r   Z
  s    

zStringIO.__init__c              	   C   sX   |    | jp|  }| }|  z |j| j ddW || S || 0 d S )NTr&  )	rg   rO  rb  r2  r7  r+  r?   r   r5  )rH   r#  Z	old_stater@   r@   rA   r   j
  s    
zStringIO.getvaluec                 C   s
   t | S rP   )objectr   r`   r@   r@   rA   r   t
  s    zStringIO.__repr__c                 C   s   d S rP   r@   r`   r@   r@   rA   r8   y
  s    zStringIO.errorsc                 C   s   d S rP   r@   r`   r@   r@   rA   r7   }
  s    zStringIO.encodingc                 C   s   |  d d S r   r[   r`   r@   r@   rA   r   
  s    zStringIO.detach)r   r*  )rL   rM   rN   r   r   r   r   r8   r7   r   r   r@   r@   r   rA   r  S
  s   


r  )r   r   NNNTN)8r   abcr   r   r  sys_threadr   r   platformZmsvcrtr   r  ior   r   r   r   r   r   addr   	SEEK_DATAr)   r   r  dev_moderj   rA  rB   rE   	open_coder.   rF   rO   rU   r-   r"   ABCMetarV   registerr   _ior'   r   r   r   r1   r0   r   r/   r  r!  r  r2   r  r@   r@   r@   rA   <module>   s   

  
 [

	
  #=
gk  CiIJ  Y@U     &