
    i*                        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 Z$d Z% G 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                    g }t          | t                    r	 t          |           } n# t          $ rl 	 |dk    r| }	 t	          | d          } |                    t                     	 | t	          |d          k    r|                    t                     n# t          $ r Y nw xY w# t          $ r- t	          | d          } |                    t                     Y nQw xY w|t          k    rt	          | d          } n1|t          k    rt	          | d          } nt          t          d          nm# t          $ rG}dt          |          v rt          t          d          t          t          |                    d }~wt          $ r t          d|           w xY wY n=w xY w| d} n4t          | t                    rnt          d| t          |                     t          | dz            } |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exs        C/usr/local/lib/python3.11/dist-packages/gevent/resolver/__init__.py_lookup_portr1   '   sY   I$%% $@	<t99DD 	< 	< 	<<q==#H!3D%@@!((555
!#';He'L'LLL ) 0 0 < < <$ ! ! ! D! ! 5 5 53D%@@!((444445 ,,/e<<DD++/e<<DD";0XYYY ( ( (#b''))";0XYYYs2ww'''% < < <4d;;;<5	<8 
	D-	(	( @,dDJJ???te|D # #"""?sv   + F"D2 *B*+.BD2
B'$D2&B''D2*4C!D2 C!!AD21F"2
F<AE>>FF"!F"c                    t          | t                    st          dt          |                     | dv rTt	          d d|t
          dt                    }t          |          dk    rt          d          |d         d         d         S | S )Nz0argument 1 must be str, bytes or bytearray, not )     r      z%wildcard resolved to multiple address   )	r#   r   	TypeErrorr*   native_getaddrinfor
   r   lenr   )hostnamefamilyresults      r0   _resolve_specialr=   V   s    h// biPTU]P^P^P^`aaa:#D!VZJOOv;;!?@@@ay|AOr4   c                   4   e Zd ZdZdZedz   ZerdndZdZd  e	e
                                          D             Zd  e	e
                                          D             Zd	 Zed
             Zd ZefdZd ZefdZd ZddZd Zd Zd Zd Z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                 B    h | ]\  }}|                     d           |S )AF_
startswith.0kvs      r0   	<setcomp>zAbstractResolver.<setcomp>|   s>       Aq<<	  r4   c                 J    h | ] \  }}|                     d           r|dv|!S )SOCK_)SOCK_CLOEXECSOCK_MAX_SIZErB   rD   s      r0   rH   zAbstractResolver.<setcomp>   sJ       Aq<<   666 	
 766r4   c                     dS )z
        Release resources held by this object.

        Subclasses that define resources should override.

        .. versionadded:: 22.10.1
        Nr   )selfs    r0   closezAbstractResolver.close   s      r4   c                 P     dd l }|                                fd            }|S )Nr   c                     	  | g|R i |S # t           $ rS}|j        d         t          k    r7t          |j                  dk    rt          | j        f|_        t          |_         d }~ww xY w)Nr   r5   )r   argsr   r9   EAI_NONAME_MSGerrno)rN   rR   kwargsr/   funcs       r0   resolvez0AbstractResolver.fixup_gaierror.<locals>.resolve   s    tD242226222   71:++BG0A0A)4+>?BG)BHs    
A,AA''A,)	functoolswraps)rV   rX   rW   s   `  r0   fixup_gaierrorzAbstractResolver.fixup_gaierror   sF    				 	 	 	 
		 r4   c                     t          |t                    r|                    | j                  }n@t          |t          t
          f          s$t          dt          |          j        z            t	          |          S )Nz(Expected str, bytes or bytearray, not %s)	r#   r   encodeHOSTNAME_ENCODINGbytes	bytearrayr7   r*   __name__)rN   r:   s     r0   _hostname_to_bytesz#AbstractResolver._hostname_to_bytes   sl    h	** 	bt'=>>HHHui&899 	bFhI``aaaXr4   c                     |                      |          }|| j        v rt          |          S t          ||          }|                     ||          d         d         S )Nr   )ra   _LOCAL_AND_BROADCAST_HOSTNAMESnative_gethostbynamer=   r   rN   r:   r;   s      r0   r   zAbstractResolver.gethostbyname   sb     **844t:::'111#Hf55$$Xv66r:1==r4   c                     |                      ||          }g }|                     |d|t          t          t                    }|d         d         }|D ]#}|                    |d         d                    $|||fS )z&Raise an ``herror`` or a ``gaierror``.r      r6   )_getaliasesr   r   r   r   r'   )rN   hostname_bytesr;   aliases	addressestuples	canonicalitems           r0   _gethostbyname_exz"AbstractResolver._gethostbyname_ex   s    "">6::	!!.!V"-")<9 9 1IaL	 	) 	)DT!WQZ((((7I..r4   c                     |                      |          }|| j        v rt          |          S |                     ||          S N)ra   rd   native_gethostbyname_exrp   rf   s      r0   r   z!AbstractResolver.gethostbyname_ex   sI    **844t::: +8444%%h777r4   c                     t           rr   NotImplementedError)rN   
host_bytesr+   r;   r,   protoflagss          r0   _getaddrinfozAbstractResolver._getaddrinfo       !!r4   r   c                 (   ||                      |          nd }t          |t                    r7|t          z  s-|| j        v s$t          |          r)|                    d          rt          ||||||          S |                     ||||||          S )Ns   fe80)	ra   r#   r^   r   _LOCAL_HOSTNAMESr   rC   r8   rz   )rN   hostr+   r;   r,   rx   ry   s          r0   r   zAbstractResolver.getaddrinfo   s    040@t&&t,,,d tU++	RN*	R 4000 && 1+/??7+C+C 1 &dD&(E5QQQ  tVXueLLLr4   c                     g S rr   r   rf   s      r0   ri   zAbstractResolver._getaliases   s    	r4   c                     t           )zRaises herror.ru   )rN   ip_address_bytess     r0   _gethostbyaddrzAbstractResolver._gethostbyaddr   s    !!r4   c                     t          |t                    }|                     |          }|| j        v rt	          |          S |                     |          S rr   )r=   r   ra   rd   native_gethostbyaddrr   )rN   
ip_addresss     r0   r   zAbstractResolver.gethostbyaddr   sT    %j)<<
,,Z88
<<<'
333"":...r4   c                     t           rr   ru   )rN   address_bytesr+   sockaddrry   s        r0   _getnameinfozAbstractResolver._getnameinfo   r{   r4   c                 t   t          |t                    st          d          t          |t                    st          d          |d         }|                     |d                   }|| j        v rt          ||          S |d         }t          |t                    st          dt          |          z            t          s|dk    rd}t          r|dk     s|dk    rt          d          t          |          dk    r|d         }|d	k    rt          d
          |                     ||||          S )Nzan integer is requiredz(getnameinfo() argument 1 must be a tupler   r5   zport must be an integer, not %sr"   zport must be 0-65535.   i z*getnameinfo(): flowinfo must be 0-1048575.)r#   r   r7   tuplera   rd   native_getnameinfor*   r   OverflowErrorr9   r   )rN   r   ry   addressr+   flowinfos         r0   r   zAbstractResolver.getnameinfo   sG   %// 	64555(E** 	HFGGG1+))(1+66d999%h666{$.. 	L=T

JKKK 		 D 	9TAXX   7888x==1{H'!!#$PQQQ  $%@@@r4   N)r   r   r   r   )r`   
__module____qualname__r]   r}   rd   r   rS   EAI_FAMILY_MSGvars_socketitems_KNOWN_ADDR_FAMILIES_KNOWN_SOCKTYPESrO   staticmethodrZ   ra   r   r   rp   r   rz   r   ri   r   r   r   r   r   r4   r0   r?   r?   b   s        &6 9 &" 	$66#  	"  DMM''))   DMM''))       \   .5 
> 
> 
> 
>/ / / 18 8 8 8 8" " "M M M M.  " " "/ / /" " "%A %A %A %A %Ar4   r?   )(r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r8   r   r   r   r   r   re   r   rs   r   r&   gevent._compatr   r   r   r   r   r   gevent.resolver._addressesr   __all__r\   r1   r=   objectr?   r   r4   r0   <module>r      sT                                  " " " " " "                                           5 5 5 5 5 5 5 5 5 5 5 5 9 9 9 9 9 9 9 9 9 9 9 9 ? ? ? ? ? ? 9 9 9 9 9 9 ( ' ' ' ' ' $ $ $ $ $ $ ) ) ) ) ) ) ( ( ( ( ( (             3 3 3 3 3 3
 f   + + +^	 	 	{A {A {A {A {Av {A {A {A {A {Ar4   