o
    óT·j{  ã                   @  sœ   d dl m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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   ú\/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/httpcore2/_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.   6   ó   €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_tls9   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_infoT   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_   d   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   c   s    úürV   )Ú
__future__r   r7   Útypingr"   Ú	anyio.abcÚanyio.streams.tlsÚ_exceptionsr   r   r   r   r   r	   r
   Ú_utilsr   Úbaser   r   r   r   rV   r   r   r   r   Ú<module>   s    $	L