a
    `g                     @   s   U 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mZ dZzd dlZeejdZW n ey|   dZdZY n0 ejejB ZejejB ZG dd	 d	eZG d
d deZee	eef  ZereneZeed< dS )    N)AnyDictListOptionalTupleTypeUnion   )AbstractResolverResolveResult)ThreadedResolverAsyncResolverDefaultResolvergetaddrinfoFc                   @   sX   e Zd ZdZdeej ddddZdej	fe
eejee ddd	Zdd
ddZdS )r   zThreaded resolver.

    Uses an Executor for synchronous getaddrinfo() calls.
    concurrent.futures.ThreadPoolExecutor is used by default.
    N)loopreturnc                 C   s   |p
t  | _d S N)asyncioget_running_loop_loop)selfr    r   ^/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/aiohttp/resolver.py__init__   s    zThreadedResolver.__init__r   hostportfamilyr   c                    s   | j j||tj|tjdI d H }g }|D ]\}}}}}|tjkrt|dk rNq(|d rx| j |tI d H \}	}
t	|
}q|d d \}	}n|tj
ksJ |\}	}|t||	|||td q(|S )N)typer   flags      hostnamer   r   r   protor   )r   r   socketSOCK_STREAMAI_ADDRCONFIGAF_INET6lengetnameinfo_NAME_SOCKET_FLAGSintAF_INETappendr   _NUMERIC_SOCKET_FLAGS)r   r   r   r   infoshosts_r$   addressresolved_hostZ_portr   r   r   resolve!   s>    

zThreadedResolver.resolver   c                    s   d S r   r   r   r   r   r   closeM   s    zThreadedResolver.close)N)__name__
__module____qualname____doc__r   r   AbstractEventLoopr   r%   r-   strr,   AddressFamilyr   r   r5   r8   r   r   r   r   r      s   ,r   c                   @   s   e Zd ZdZdeej eeddddZde	j
feee	jee ddd	Zde	j
feeeeeeef  dd
dZddddZdS )r   z9Use the `aiodns` package to make asynchronous DNS lookupsN)r   argskwargsr   c                 O   s:   t d u rtdt j|i || _t| jds6| j| _d S )Nz Resolver requires aiodns librarygethostbyname)aiodnsRuntimeErrorDNSResolver	_resolverhasattr_resolve_with_queryr5   )r   r   r@   rA   r   r   r   r   T   s
    zAsyncResolver.__init__r   r   c                    sR  z$| j j||tj|tjdI d H }W nP tjjyt } z4t|j	dkrP|j	d nd}t
d ||W Y d }~n
d }~0 0 g }|jD ]}|j}	|j}|tjkrt|	dkr|	d r| j |	d dg|	dd  R tI d H }
|
j}n|	d d}|	d }n&|tjksJ |	d d}|	d }|t||||dtd q|sNt
d d|S )N)r   r   r   r   r	   DNS lookup failedr    r   asciir"   )rF   r   r%   r&   r'   rC   errorDNSErrorr)   r@   OSErrornodesaddrr   r(   r*   decoder+   noder-   r.   r   r/   )r   r   r   r   respexcmsgr1   rQ   r3   resultr4   r   r   r   r5   c   sP    "




zAsyncResolver.resolvec           
   
      s   |t jkrd}nd}z| j||I d H }W nP tjjy| } z4t|jdkrX|jd nd}t	d ||W Y d }~n
d }~0 0 g }|D ] }	|
||	j||dt jd q|st	d d|S )NZAAAAAr	   rI   r   r"   )r%   r(   rF   queryrC   rK   rL   r)   r@   rM   r.   r   AI_NUMERICHOST)
r   r   r   r   ZqtyperR   rS   rT   r1   rrr   r   r   rH      s,    
"
z!AsyncResolver._resolve_with_queryr6   c                    s   | j   d S r   )rF   cancelr7   r   r   r   r8      s    zAsyncResolver.close)N)r9   r:   r;   r<   r   r   r=   r   r   r%   r-   r>   r,   r?   r   r   r5   r   rH   r8   r   r   r   r   r   Q   s&    4 r   r   )r   r%   typingr   r   r   r   r   r   r   abcr
   r   __all__rC   rG   rE   Zaiodns_defaultImportErrorrX   AI_NUMERICSERVr/   NI_NUMERICHOSTNI_NUMERICSERVr+   r   r   Z_DefaultTyper   __annotations__r   r   r   r   <module>   s    
$
:i