U
    @f                  
   @   s  d dl Zd dlZd dlZd dlZd dlmZ	m
ZmZmZmZmZ d dlmZ d dlmZmZmZmZ d dlmZmZmZmZ d dlm Z  ddgZ!ej"Z#G d	d
 d
eZ$e%e& Z'e'(e%e	eeee$ed e)edrej*e'd< e+ej,dej,Z-ee-j.e'Z/dddZ0ee0_1dS )    N)BufferedRandomBufferedReaderBufferedWriterDEFAULT_BUFFER_SIZETextIOWrapperIOBase)FunctionType)_operation_on_closed_filegreenpipe_docset_nonblockingSOCKET_BLOCKING)notify_closenotify_openedIOClosed
trampoline)	get_errno_fileobject	GreenPipec                   @   s   e Zd Zd*ddZedd Zdd	 Zd
d Zdd Zdd Z	d+ddZ
dd Zdd Zdd Zd,ddZdd Zdd Zd d! Zd-d"d#Zejfd$d%Zd&d' Zd(d) ZdS ).GreenFileIOrTNc              	   C   s   t |tr|}d| | _n:t |ts(tt||}|j| _t|	 }W 5 Q R X t
| || _|| _d| _t|  d | _d S )Nz<fd:%d>F)
isinstanceint_namestrAssertionErroropenname_original_osdupfilenor   _fileno_mode_closedr   	_seekable)selfr   modeclosefdopenerr   fd r)   N/var/www/html/chatgpt/venv/lib/python3.8/site-packages/eventlet/greenio/py3.py__init__"   s    
zGreenFileIO.__init__c                 C   s   | j S Nr"   r$   r)   r)   r*   closed3   s    zGreenFileIO.closedc              
   C   sh   | j d krbzt| jdtj W n: tk
rZ } zt|tjkrHd| _ n W 5 d }~X Y nX d| _ | j S )Nr   FT)	r#   r   lseekr    SEEK_CUROSErrorr   errnoZESPIPEr$   er)   r)   r*   seekable7   s    
zGreenFileIO.seekablec                 C   s   d| j kpd| j kS )Nr   +r!   r.   r)   r)   r*   readableE   s    zGreenFileIO.readablec                 C   s   d| j kpd| j kpd| j kS )Nwr7   ar8   r.   r)   r)   r*   writableH   s    zGreenFileIO.writablec                 C   s   | j S r,   )r    r.   r)   r)   r*   r   K   s    zGreenFileIO.filenoc              
   C   sn   |dkr|   S zt| j|W S  tk
rf } z(t|tkrHt|j | j| dd W 5 d }~X Y qX qd S )Nr=   Tread)	readallr   r?   r    r2   r   r   args_trampoline)r$   sizer5   r)   r)   r*   r?   N   s    
zGreenFileIO.readc              
   C   s   g }z0t | jt}|dkr(d|W S || W q tk
rz } z(t|tkr\t|j	 | j
| dd W 5 d }~X Y qX qd S )N    Tr>   )r   r?   r    r   joinappendr2   r   r   rA   rB   )r$   bufchunkr5   r)   r)   r*   r@   Z   s    
zGreenFileIO.readallc                 C   s*   t |}| |}t |}||d |< |S r,   )lenr?   )r$   bZup_todataZ
bytes_readr)   r)   r*   readintog   s
    
zGreenFileIO.readintoc              
   C   sB   zt |  W S  tk
r< } zt|j W 5 d }~X Y nX d S r,   )r   isattyr   r2   rA   r4   r)   r)   r*   rM   n   s    zGreenFileIO.isattyFc                 C   sH   | j rt zt|||||| jdW S  tk
rB   |    Y nX d S )N)r?   writetimeouttimeout_excZmark_as_closed)r"   r   r   _mark_as_closed)r$   r(   r?   rN   rO   rP   r)   r)   r*   rB   t   s    
zGreenFileIO._trampolinec                 C   s
   d| _ dS )z" Mark this socket as being closed TNr-   r.   r)   r)   r*   rQ      s    zGreenFileIO._mark_as_closedc              
   C   s   t |}t|}d}||k rzt| j||d  }W nD tk
rz } z&t|tkr^t|j t	| dd W 5 d }~X Y qX ||7 }q|S )Nr   T)rN   )

memoryviewrI   r   rN   r    r2   r   r   rA   r   )r$   rK   viewZdatalenoffsetZwrittenr5   r)   r)   r*   rN      s    

zGreenFileIO.writec                 C   s<   | j sd| _ t| j t| j dD ]}t| |t q&d S )NT)r   flushrM   nextr?   rL   readline	readlinesseektelltruncaterN   Z
xreadlines__iter____next__
writelines)r"   r   closer    r   setattrr	   )r$   methodr)   r)   r*   r_      s    
zGreenFileIO.closec              
   C   sn   |d krd}|dkr|   }zt| j|}W n, tk
rZ } zt|j W 5 d }~X Y nX | | |S d S )Nr=   )rZ   r   	ftruncater    r2   rA   rY   )r$   rC   rvr5   r)   r)   r*   r[      s    
zGreenFileIO.truncatec              
   C   sD   zt | j||W S  tk
r> } zt|j W 5 d }~X Y nX d S r,   )r   r0   r    r2   rA   )r$   rT   whencer5   r)   r)   r*   rY      s    zGreenFileIO.seekc                 C   s   | S r,   r)   r.   r)   r)   r*   	__enter__   s    zGreenFileIO.__enter__c                 G   s   |    d S r,   )r_   )r$   rA   r)   r)   r*   __exit__   s    zGreenFileIO.__exit__)r   TN)r=   )FFNN)r=   )__name__
__module____qualname__r+   propertyr/   r6   r9   r<   r   r?   r@   rL   rM   rB   rQ   rN   r_   r[   r   SEEK_SETrY   re   rf   r)   r)   r)   r*   r   !   s&   




r   )r   r   r   r   FileIOostext_encoding__wrapped__r   r=   Tc           	   	   C   sN   z|   }W n tk
r    Y nX t|}|   |} t| |||||||S r,   )r   AttributeErrorr   r   r_   _open)	r   r%   	bufferingencodingerrorsnewliner&   r'   r   r)   r)   r*   r      s    
)r   r=   NNNTN)2Z_pyioZ_original_pyior3   rm   r   socketZ_original_socketior   Z_OriginalBufferedRandomr   Z_OriginalBufferedReaderr   Z_OriginalBufferedWriterr   r   Z_OriginalTextIOWrapperr   Z_OriginalIOBasetypesr   Zeventlet.greenio.baser	   r
   r   r   Zeventlet.hubsr   r   r   r   Zeventlet.supportr   __all__SocketIOr   r   dictglobalsZ_open_environmentupdatehasattrrn   getattrr   Z
_pyio_open__code__rq   r   __doc__r)   r)   r)   r*   <module>   sD     


      
