o
    ÑtPf*  ã                   @   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ƒr™z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 r€t	t
dƒ‚t	t|ƒƒ‚d }~w ty•   td| ƒ‚w Y nw | d u r d} nt | tƒr¦n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   úY/var/www/html/humari/django-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 )Néÿÿÿÿr   )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>   
/