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
   M/var/www/html/olx_land/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 ]F}z;tj|}|d usT| jdkrZ|| jf}nd }||f}td|}t|}t |tjd|||I d H }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   _CoreTrioStreamr4   	ExceptionhttpcoreConnectError)r   hostportr	   local_addresssocket_optionsrR   _
expirationr   answersaddressafsourcer   attempt_expirationr   r
   r
   r   connect_tcp{   s@   


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   ri      r;   z_NetworkBackend.sleepr   )r.   r/   r0   r   rd   rf   ri   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   rk      s    rk   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	                    s<  t j|||}	d }
zD|r|	t||I d H  |tjks"|d urNd}t| |	t||I d H  d}W d    n1 s@w   Y  |sNtjj	|dW n t
y[   |	   w |tjkret|	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   rV   r#   r   r   SocketStream	SSLStreamr:   r2   r+   )r   ra   socktypeprotorb   r   r	   ssl_contextrv   sr4   	connectedr5   r
   r
   r   rT      sP   




zBackend.make_socketc                    rg   r   rh   )r   intervalr
   r
   r   ri      r;   zBackend.sleepc                 C   s   t S r   )rk   r$   r
   r
   r   get_transport_class   ru   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   rt   rT   ri   r   r   r
   r
   r
   r   rS      s    
/rS   )$__doc__r   r   trio.socketdns._asyncbackendr   dns._featuresdns.exceptiondns.inet	_featureshaveImportErrorr   rM   low_level_address_tuplerx   r   r   r2   rW   httpcore._backends.triohttpxAsyncNetworkBackend_CoreAsyncNetworkBackend	_backends
TrioStreamrU   	dns.queryrA   rB   rC   rD   AsyncHTTPTransportrk   NullTransportrS   r
   r
   r
   r   <module>   s2   !(
4