o
    oi*                     @   sf  d dl Z d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d d	l mZ d d
l m	Z	 d dl m
Z
 d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dl m!Z! dZ"d#d dd Z$d d! Z%G d"d# d#e&Z'dS )$    N)AF_INET)	AF_UNSPEC)AI_CANONNAME)
AI_PASSIVE)AI_NUMERICHOST)
EAI_NONAME)EAI_SERVICE)
SOCK_DGRAM)SOCK_STREAM)SOL_TCP)error)gaierror)getaddrinfo)getnameinfo)gethostbyaddr)gethostbyname)gethostbyname_ex)getservbyname)string_types)	text_type)hostname_types)integer_types)PYPY)MAC)is_ipv6_addr fooidnac                 C   s  g }t | trzt| } W n ty   zY|dkrS| }zt| d} |t W n ty:   t| d} |t Y n2w z| t|dkrH|t W n" tyR   Y nw |tkr]t| d} n|tkrgt| d} nt	t
dW n( ty } zdt|v rt	t
dt	t|d }~w ty   td| w Y nw | d u rd} nt | trntd| t| t| d } |s|r|| | |fS )Nr   tcpudpz&Servname not supported for ai_socktypez	not foundzInt or String expected   )
isinstancer   int
ValueErrornative_getservbynameappendr
   r   r	   r   r   strUnicodeEncodeErrorr   type)portsocktype	socktypesorigportexr   r   W/var/www/html/pca-backend/venv/lib/python3.10/site-packages/gevent/resolver/__init__.py_lookup_port'   s^   








r/   c                 C   s^   t | tstdt| f | dv r-td d|tdt}t|dkr%td|d d d S | S )Nz2argument 1 must be str, bytes or bytearray, not %s)     r      z%wildcard resolved to multiple address   )	r!   r   	TypeErrorr(   native_getaddrinfor	   r   lenr   )hostnamefamilyresultr   r   r.   _resolve_specialV   s   
r:   c                   @   s   e Zd ZdZdZed ZerdndZdZdd e	e
 D Zd	d e	e
 D Zd
d Zedd Zdd ZefddZdd ZefddZdd Zd&ddZdd Zdd Zdd  Zd!d" Zd#d$ Zd%S )'AbstractResolverr   )s	   localhosts   ip6-localhosts   ::1s	   127.0.0.1)s   255.255.255.255s   <broadcast>z,nodename nor servname provided, or not knownzName or service not knownzai_family not supportedc                 C   s   h | ]\}}| d r|qS )AF_
startswith.0kvr   r   r.   	<setcomp>|   s    zAbstractResolver.<setcomp>c                 C   s&   h | ]\}}| d r|dvr|qS )SOCK_)SOCK_CLOEXECSOCK_MAX_SIZEr=   r?   r   r   r.   rC      s    c                 C   s   dS )z
        Release resources held by this object.

        Subclasses that define resources should override.

        .. versionadded:: 22.10.1
        Nr   )selfr   r   r.   close   s    zAbstractResolver.closec                    s"   dd l }|  fdd}|S )Nr   c              
      sb   z | g|R i |W S  t y0 } z|jd tkr+t|jdkr+t| jf|_t|_ d }~ww )Nr   r2   )r   argsr   r6   EAI_NONAME_MSGerrno)rG   rI   kwargsr-   funcr   r.   resolve   s   z0AbstractResolver.fixup_gaierror.<locals>.resolve)	functoolswraps)rN   rP   rO   r   rM   r.   fixup_gaierror   s   	zAbstractResolver.fixup_gaierrorc                 C   sF   t |tr|| j}t|S t |ttfstdt|j t|S )Nz(Expected str, bytes or bytearray, not %s)	r!   r   encodeHOSTNAME_ENCODINGbytes	bytearrayr4   r(   __name__)rG   r7   r   r   r.   _hostname_to_bytes   s   
z#AbstractResolver._hostname_to_bytesc                 C   s:   |  |}|| jv rt|S t||}| ||d d S )Nr   )rX   _LOCAL_AND_BROADCAST_HOSTNAMESnative_gethostbynamer:   r   rG   r7   r8   r   r   r.   r      s
   


zAbstractResolver.gethostbynamec                 C   sV   |  ||}g }| |d|ttt}|d d }|D ]}||d d  q|||fS )z&Raise an ``herror`` or a ``gaierror``.r      r3   )_getaliasesr   r
   r   r   r%   )rG   hostname_bytesr8   aliases	addressestuples	canonicalitemr   r   r.   _gethostbyname_ex   s   

z"AbstractResolver._gethostbyname_exc                 C   s(   |  |}|| jv rt|S | ||S N)rX   rZ   native_gethostbyname_exre   r\   r   r   r.   r      s   

z!AbstractResolver.gethostbyname_exc                 C      t rf   NotImplementedError)rG   
host_bytesr)   r8   r*   protoflagsr   r   r.   _getaddrinfo      zAbstractResolver._getaddrinfor   c                 C   sj   |d ur	|  |nd }t|tr"|t@ s"|| jv s"t|r+|dr+t||||||S | ||||||S )Ns   fe80)	rX   r!   rU   r   _LOCAL_HOSTNAMESr   r>   r5   rn   )rG   hostr)   r8   r*   rl   rm   r   r   r.   r      s   
zAbstractResolver.getaddrinfoc                 C   s   g S rf   r   r\   r   r   r.   r^         zAbstractResolver._getaliasesc                 C   rh   )zRaises herror.ri   )rG   ip_address_bytesr   r   r.   _gethostbyaddr   rr   zAbstractResolver._gethostbyaddrc                 C   s0   t |t}| |}|| jv rt|S | |S rf   )r:   r   rX   rZ   native_gethostbyaddrrt   )rG   
ip_addressr   r   r.   r      s
   



zAbstractResolver.gethostbyaddrc                 C   rh   rf   ri   )rG   address_bytesr)   sockaddrrm   r   r   r.   _getnameinfo   ro   zAbstractResolver._getnameinfoc                 C   s   t |ts	tdt |tstd|d }| |d }|| jv r't||S |d }t |ts8tdt| ts@|dkr@d}trN|dk sJ|dkrNt	dt
|dkr`|d }|d	kr`t	d
| ||||S )Nzan integer is requiredz(getnameinfo() argument 1 must be a tupler   r2   zport must be an integer, not %sr    zport must be 0-65535.   i z*getnameinfo(): flowinfo must be 0-1048575.)r!   r   r4   tuplerX   rZ   native_getnameinfor(   r   OverflowErrorr6   ry   )rG   rx   rm   addressr)   flowinfor   r   r.   r      s(   




	zAbstractResolver.getnameinfoN)r   r   r   r   )rW   
__module____qualname__rT   rp   rZ   r   rJ   EAI_FAMILY_MSGvars_socketitems_KNOWN_ADDR_FAMILIES_KNOWN_SOCKTYPESrH   staticmethodrR   rX   r   r   re   r   rn   r   r^   rt   r   ry   r   r   r   r   r.   r;   b   s<    

	

r;   )(r   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r5   r   r|   r   ru   r   r[   r   rg   r   r$   gevent._compatr   r   r   r   r   r   gevent.resolver._addressesr   __all__rS   r/   r:   objectr;   r   r   r   r.   <module>   s>   
/