a
    Of                     @   s   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	m
Z
 ddlmZ ddlmZmZmZ G dd deZG d	d
 d
eZdS )    N   )ConnectErrorConnectTimeout	ReadErrorReadTimeout
WriteErrorWriteTimeoutmap_exceptions)is_socket_readable   )SOCKET_OPTIONAsyncNetworkBackendAsyncNetworkStreamc                   @   s   e Zd ZejjddddZdeej	e
 edddZdeej	e
 ddd	d
ZddddZdejej	e ej	e
 edddZeejdddZdS )AnyIOStreamN)streamreturnc                 C   s
   || _ d S N)_stream)selfr    r   Q/var/www/ai-form-bot/venv/lib/python3.9/site-packages/httpcore/_backends/anyio.py__init__   s    zAnyIOStream.__init__)	max_bytestimeoutr   c              
      s   t ttjttjttjti}t| t|r z2| j	j
|dI d H W W  d    W  d    S  tjy   Y W d    W d    dS 0 W d    n1 s0    Y  W d    n1 s0    Y  d S )N)r       )TimeoutErrorr   anyioBrokenResourceErrorr   ClosedResourceErrorEndOfStreamr	   
fail_afterr   Zreceive)r   r   r   exc_mapr   r   r   read   s    
2zAnyIOStream.read)bufferr   r   c              	      s   |sd S t ttjttjti}t|N t|$ | jj	|dI d H  W d    n1 sZ0    Y  W d    n1 sx0    Y  d S )N)item)
r   r   r   r   r   r   r	   r    r   send)r   r#   r   r!   r   r   r   write'   s    
zAnyIOStream.write)r   c                    s   | j  I d H  d S r   )r   aclose)r   r   r   r   r'   6   s    zAnyIOStream.aclose)ssl_contextserver_hostnamer   r   c                    s   t ttjttjti}t| zPt|2 tjj	j
j| j||dddI d H }W d    n1 sb0    Y  W n6 ty } z|  I d H  |W Y d }~n
d }~0 0 W d    n1 s0    Y  t|S )NF)r(   hostnameZstandard_compatibleserver_side)r   r   r   r   r   r   r	   r    streamstlsZ	TLSStreamwrapr   	Exceptionr'   r   )r   r(   r)   r   r!   Z
ssl_streamexcr   r   r   	start_tls9   s$    

.8zAnyIOStream.start_tls)infor   c                 C   s   |dkr| j tjjjjd S |dkr:| j tjjj	d S |dkrV| j tjjj
d S |dkrr| j tjjjd S |dkr| j tjjjd }t|S d S )N
ssl_objectclient_addrZserver_addrsocketZis_readable)r   extrar   r,   r-   ZTLSAttributer3   abcZSocketAttributelocal_addressZremote_addressZ
raw_socketr
   )r   r2   sockr   r   r   get_extra_infoS   s    zAnyIOStream.get_extra_info)N)N)NN)__name__
__module____qualname__r   r7   Z
ByteStreamr   inttypingOptionalfloatbytesr"   r&   r'   ssl
SSLContextstrr   r1   Anyr:   r   r   r   r   r      s*    
 
  r   c                   @   sv   e Zd Zdeeeje eje ejeje	  e
dddZdeeje ejeje	  e
dddZeddd	d
ZdS )AnyIOBackendN)hostportr   r8   socket_optionsr   c           	   	      s   |d u rg }t ttttjti}t|f t|< tj|||dI d H }|D ]}|j	j
|  qNW d    n1 st0    Y  W d    n1 s0    Y  t|S )N)Zremote_hostZremote_portZ
local_host)r   r   OSErrorr   r   r   r	   r    connect_tcp_raw_socket
setsockoptr   )	r   rH   rI   r   r8   rJ   r!   r   optionr   r   r   rL   c   s     
JzAnyIOBackend.connect_tcp)pathr   rJ   r   c              	      s   |d u rg }t ttttjti}t|` t|6 t|I d H }|D ]}|j	j
|  qHW d    n1 sn0    Y  W d    n1 s0    Y  t|S r   )r   r   rK   r   r   r   r	   r    Zconnect_unixrM   rN   r   )r   rP   r   rJ   r!   r   rO   r   r   r   connect_unix_socket~   s    
Jz AnyIOBackend.connect_unix_socket)secondsr   c                    s   t |I d H  d S r   )r   sleep)r   rR   r   r   r   rS      s    zAnyIOBackend.sleep)NNN)NN)r;   r<   r=   rE   r>   r?   r@   rA   Iterabler   r   rL   rQ   rS   r   r   r   r   rG   b   s(        rG   )rC   r?   r   _exceptionsr   r   r   r   r   r   r	   Z_utilsr
   baser   r   r   r   rG   r   r   r   r   <module>   s   $	O