o
    h!                     @   s  d Z 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Zej	
ds(eddd ZejjZG dd dejjZG d	d
 d
ejjZej	
drzddlZddlZddlZejZejjjZddlmZmZmZ G dd deZG dd dej Z!nejj"Z!G dd dejj#Z#dS )z$trio async I/O library query support    Ntrioztrio not found or too oldc                 C   s   | d ur	t | S tj S N)r   move_on_afterdns_asyncbackendNullContexttimeout r
   S/var/www/html/pro-man-master/venv/lib/python3.10/site-packages/dns/_trio_backend.py_maybe_timeout   s   

r   c                       sL   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	  Z
S )DatagramSocketc                    s   t  |jtj || _d S r   )super__init__familysocket
SOCK_DGRAM)selfsock	__class__r
   r   r   !   s   
zDatagramSocket.__init__c                    st   t |& |d u r| j|I d H W  d    S | j||I d H W  d    S 1 s.w   Y  tjj|dNr   )r   r   sendsendtor   	exceptionTimeout)r   whatdestinationr	   r
   r
   r   r   %   s   
 zDatagramSocket.sendtoc                    J   t | | j|I d H W  d    S 1 sw   Y  tjj|dr   )r   r   recvfromr   r   r   r   sizer	   r
   r
   r   r   /   
   
 zDatagramSocket.recvfromc                    s   | j   d S r   )r   closer   r
   r
   r   r#   4   s   zDatagramSocket.closec                       | j  S r   )r   getpeernamer$   r
   r
   r   r&   7      
zDatagramSocket.getpeernamec                    r%   r   )r   getsocknamer$   r
   r
   r   r(   :   r'   zDatagramSocket.getsocknamec                       t r   NotImplementedErrorr   r	   r
   r
   r   getpeercert=   s   zDatagramSocket.getpeercert)__name__
__module____qualname__r   r   r   r#   r&   r(   r-   __classcell__r
   r
   r   r   r       s    
r   c                       sN   e Zd Zd fdd	Zdd Zdd Zdd	 Zd
d Zdd Zdd Z	  Z
S )StreamSocketFc                    s    t  |tj || _|| _d S r   )r   r   r   SOCK_STREAMstreamtls)r   r   r4   r5   r   r
   r   r   B   s   
zStreamSocket.__init__c                    r   r   )r   r4   send_allr   r   r   )r   r   r	   r
   r
   r   sendallG   r"   zStreamSocket.sendallc                    r   r   )r   r4   receive_somer   r   r   r    r
   r
   r   recvL   r"   zStreamSocket.recvc                    s   | j  I d H  d S r   )r4   acloser$   r
   r
   r   r#   Q      zStreamSocket.closec                    "   | j r| jjj S | jj S r   )r5   r4   transport_streamr   r&   r$   r
   r
   r   r&   T      zStreamSocket.getpeernamec                    r<   r   )r5   r4   r=   r   r(   r$   r
   r
   r   r(   Z   r>   zStreamSocket.getsocknamec                    sN   | j r%t| | j I d H  W d    n1 sw   Y  | j S tr   )r5   r   r4   do_handshaker-   r+   r,   r
   r
   r   r-   `   s   

zStreamSocket.getpeercert)F)r.   r/   r0   r   r7   r9   r#   r&   r(   r-   r1   r
   r
   r   r   r2   A   s    r2   doh)_compute_times_expiration_for_this_attempt
_remainingc                       s<   e Zd Z fddZ	d
ddZ	dddZdd	 Z  ZS )_NetworkBackendc                    s&   t    || _|| _|| _|| _d S r   )r   r   _local_port	_resolver_bootstrap_address_family)r   resolver
local_portbootstrap_addressr   r   r
   r   r   t   s
   

z_NetworkBackend.__init__Nc              	      s&  g }t |\}}tj|r|| n+| jd ur!|| j nt|}| j}	|r0tj|}	| j	j
||	|dI d H }
|
 }|D ]M}zBtj|}|d usT| jdkrZ|| jf}nd }||f}td|}t|}t |tjd|||I d H }t|tsJ t|jW   S  ty   Y qBw tj)N)r   lifetimer   g       @)rA   r   inet
is_addressappendrG   rC   rH   af_for_addressrF   resolve_name	addressesrE   rB   Backendmake_socketr   r3   
isinstancer2   _CoreTrioStreamr4   	ExceptionhttpcoreConnectError)r   hostportr	   local_addresssocket_optionsrR   _
expirationr   answersaddressafsourcer   attempt_expirationr   r
   r
   r   connect_tcp{   sB   


z_NetworkBackend.connect_tcpc                    r)   r   r*   )r   pathr	   r]   r
   r
   r   connect_unix_socket   s   z#_NetworkBackend.connect_unix_socketc                       t |I d H  d S r   r   sleep)r   secondsr
   r
   r   rj      r;   z_NetworkBackend.sleep)NNN)NN)r.   r/   r0   r   re   rg   rj   r1   r
   r
   r   r   rD   s   s    
&
rD   c                       s*   e Zd Zdddejd fdd
Z  ZS )_HTTPTransportr   N)rJ   rK   rI   r   c                   sJ   |d u r|d u rdd l }|j }t j|i | t||||| j_d S )Nr   )dns.asyncresolverasyncresolverResolverr   r   rD   _pool_network_backend)r   rJ   rK   rI   r   argskwargsr   r   r
   r   r      s   	
z_HTTPTransport.__init__)r.   r/   r0   r   	AF_UNSPECr   r1   r
   r
   r   r   rl      s    rl   c                   @   sB   e Zd Zdd Z						dddZdd Zd	d
 Zdd ZdS )rS   c                 C   s   dS )Nr   r
   r$   r
   r
   r   name      zBackend.namer   Nc	                    sH  t j|||}	d }
zJ|r|	t||I d H  |tjks"|d urTd}t| |d us/J |	t||I d H  d}W d    n1 sFw   Y  |sTtjj	|dW n t
ya   |	   w |tjkrkt|	S |tjkrt |	}
d}|rd}z
t j|
||d}
W n t
y   |
 I d H   w t||
|S tdd|  )NFTr   )server_hostnamezunsupported socket ztype )r   r   bind_lltupler3   r   connectr   r   r   rW   r#   r   r   SocketStream	SSLStreamr:   r2   r+   )r   rb   socktypeprotorc   r   r	   ssl_contextrw   sr4   	connectedr5   r
   r
   r   rT      sR   




zBackend.make_socketc                    rh   r   ri   )r   intervalr
   r
   r   rj      r;   zBackend.sleepc                 C   s   t S r   )rl   r$   r
   r
   r   get_transport_class   rv   zBackend.get_transport_classc                    sB   t | |I d H W  d    S 1 sw   Y  tjj|dr   )r   r   r   r   )r   	awaitabler	   r
   r
   r   wait_for   s   
 zBackend.wait_for)r   NNNNN)r.   r/   r0   ru   rT   rj   r   r   r
   r
   r
   r   rS      s    
0rS   )$__doc__r   r   trio.socketdns._asyncbackendr   dns._featuresdns.exceptiondns.inet	_featureshaveImportErrorr   rM   low_level_address_tuplery   r   r   r2   rX   httpcore._backends.triohttpxAsyncNetworkBackend_CoreAsyncNetworkBackend	_backends
TrioStreamrV   	dns.queryrA   rB   rC   rD   AsyncHTTPTransportrl   NullTransportrS   r
   r
   r
   r   <module>   s2   !(
5