o
    MK&h                     @  s   d dl m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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 )    )annotationsN   )ConnectErrorConnectTimeout	ReadErrorReadTimeout
WriteErrorWriteTimeoutmap_exceptions)is_socket_readable   )SOCKET_OPTIONAsyncNetworkBackendAsyncNetworkStreamc                   @  sR   e Zd Zd ddZd!d"ddZd!d#ddZd$ddZ		d%d&ddZd'ddZdS )(AnyIOStreamstreamanyio.abc.ByteStreamreturnNonec                 C  s
   || _ d S N)_stream)selfr    r   K/var/www/html/venv/lib/python3.10/site-packages/httpcore/_backends/anyio.py__init__   s   
zAnyIOStream.__init__N	max_bytesinttimeoutfloat | Nonebytesc              
     s   t ttjttjttjti}t|H t|2 z| j	j
|dI d H W W  d    W  d    S  tjyI   Y W d    W d    dS w 1 sMw   Y  W d    d S 1 s]w   Y  d S )N)r       )TimeoutErrorr   anyioBrokenResourceErrorr   ClosedResourceErrorEndOfStreamr
   
fail_afterr   receive)r   r   r   exc_mapr   r   r   read   s&   
"zAnyIOStream.readbufferc              	     s   |sd S t ttjttjti}t|0 t| | jj	|dI d H  W d    n1 s.w   Y  W d    d S W d    d S 1 sFw   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.writec                   s   | j  I d H  d S r   )r   aclose)r   r   r   r   r.   4      zAnyIOStream.aclosessl_contextssl.SSLContextserver_hostname
str | Noner   c                   s   t ttjttjttjti}t|I z(t	| tj
jjj| j||dddI d H }W d    n1 s5w   Y  W n tyP } z	|  I d H  |d }~ww W d    t|S 1 s^w   Y  t|S )NF)r0   hostnamestandard_compatibleserver_side)r!   r   r"   r#   r   r%   sslSSLErrorr
   r&   streamstls	TLSStreamwrapr   	Exceptionr.   r   )r   r0   r2   r   r(   
ssl_streamexcr   r   r   	start_tls7   s8   


zAnyIOStream.start_tlsinfostr
typing.Anyc                 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r+| j tjjj
d S |dkr9| j tjjjd S |dkrK| j tjjjd }t|S d S )N
ssl_objectclient_addrserver_addrsocketis_readable)r   extrar"   r9   r:   TLSAttributerD   abcSocketAttributelocal_addressremote_address
raw_socketr   )r   rA   sockr   r   r   get_extra_infoR   s   zAnyIOStream.get_extra_info)r   r   r   r   r   )r   r   r   r   r   r   )r*   r   r   r   r   r   )r   r   NN)r0   r1   r2   r3   r   r   r   r   )rA   rB   r   rC   )	__name__
__module____qualname__r   r)   r-   r.   r@   rQ   r   r   r   r   r      s    

r   c                   @  s8   e Zd Z			ddddZ		ddddZdddZdS )AnyIOBackendNhostrB   portr   r   r   rM   r3   socket_options%typing.Iterable[SOCKET_OPTION] | Noner   r   c           	   	     s   |d u rg }t ttttjti}t|@ t| tj|||dI d H }|D ]}|j	j
|  q(W d    n1 s;w   Y  W d    t|S W d    t|S 1 sWw   Y  t|S )N)remote_hostremote_port
local_host)r!   r   OSErrorr   r"   r#   r
   r&   connect_tcp_raw_socket
setsockoptr   )	r   rW   rX   r   rM   rY   r(   r   optionr   r   r   r_   b   s2   





zAnyIOBackend.connect_tcppathc              	     s   |d u rg }t ttttjti}t|= t| t|I d H }|D ]}|j	j
|  q%W d    n1 s8w   Y  W d    t|S W d    t|S 1 sTw   Y  t|S r   )r!   r   r^   r   r"   r#   r
   r&   connect_unixr`   ra   r   )r   rc   r   rY   r(   r   rb   r   r   r   connect_unix_socket}   s*   


z AnyIOBackend.connect_unix_socketsecondsfloatr   c                   s   t |I d H  d S r   )r"   sleep)r   rf   r   r   r   rh      r/   zAnyIOBackend.sleep)NNN)rW   rB   rX   r   r   r   rM   r3   rY   rZ   r   r   rR   )rc   rB   r   r   rY   rZ   r   r   )rf   rg   r   r   )rS   rT   rU   r_   re   rh   r   r   r   r   rV   a   s    rV   )
__future__r   r7   typingr"   _exceptionsr   r   r   r   r   r	   r
   _utilsr   baser   r   r   r   rV   r   r   r   r   <module>   s    $	L