
    ,hv                       d dl mZ d dlZd dlmZ d dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZmZmZ ddlmZmZmZ ddlmZmZmZ ddlm Z  ee!eef   Z"e#e!e$f   Z%ee%e!f   Z&e#e'e%f   Z(e#e'e!f   Z) ed      Z* G d d      Z+ G d de      Z, G d de      Z- G d dee-      Z. G d de.      Z/ G d dee.   e-      Z0 G d dee(   e-      Z1 G d d ee'   e-      Z2 G d! d"ee)   e-      Z3 G d# d$ee'   e-      Z4y)%    )annotationsN)abstractmethod)Callable
CollectionMapping)AsyncExitStack)IOBase)IPv4AddressIPv6Address)AddressFamily)TracebackType)AnyTypeVarUnion   )TypedAttributeProviderTypedAttributeSettyped_attribute   )
ByteStreamListenerUnreliableObjectStream)	TaskGroupT_Retvalc                  ,    e Zd ZddZ	 	 	 	 	 	 	 	 ddZy)_NullAsyncContextManagerc                   K   y wN selfs    T/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/anyio/abc/_sockets.py
__aenter__z#_NullAsyncContextManager.__aenter__   s	        c                   K   y wr   r   )r!   exc_typeexc_valexc_tbs       r"   	__aexit__z"_NullAsyncContextManager.__aexit__!   s      r$   N)returnNone)r&   ztype[BaseException] | Noner'   zBaseException | Noner(   zTracebackType | Noner*   zbool | None)__name__
__module____qualname__r#   r)   r       r"   r   r      s2    , & %	
 
r/   r   c                      e Zd ZU  e       Zded<    e       Zded<    e       Zded<    e       Zded<    e       Z	ded	<    e       Z
ded
<   y)SocketAttributer   familySockAddrTypelocal_addressint
local_portsocket.socket
raw_socketremote_addressremote_portN)r,   r-   r.   r   r2   __annotations__r4   r6   r8   r9   r:   r   r/   r"   r1   r1   *   sP    +-FM-"1"3M<3%'J' / 1J1#2#4NL4&(K(r/   r1   c                  :    e Zd Zedd       Zeedd              Zy)_SocketProviderc                    ddl m t        j                   fdt        j                   fdt        j
                   fdi}	   j                  j                               fd|t        j                  <    j                  j                  t        j                  t        j                  fv r3 fd|t        j                  <   d   fd	|t        j                  <   |S # t        $ r d Y w xY w)
Nr   )convert_ipv6_sockaddrc                 0     j                   j                  S r   )_raw_socketr2   r    s   r"   <lambda>z2_SocketProvider.extra_attributes.<locals>.<lambda>?   s    D,<,<,C,C r/   c                 D      j                   j                               S r   rA   getsockname)convertr!   s   r"   rB   z2_SocketProvider.extra_attributes.<locals>.<lambda>@   s    7  ,,.4 r/   c                      j                   S r   )rA   r    s   r"   rB   z2_SocketProvider.extra_attributes.<locals>.<lambda>C   s    0@0@ r/   c                      S r   r   )peernames   r"   rB   z2_SocketProvider.extra_attributes.<locals>.<lambda>L   s     r/   c                 >     j                   j                         d   S )Nr   rD   r    s   r"   rB   z2_SocketProvider.extra_attributes.<locals>.<lambda>Q   s    ((446q9 r/   r   c                      S r   r   )r:   s   r"   rB   z2_SocketProvider.extra_attributes.<locals>.<lambda>U   s    + r/   )_core._socketsr?   r1   r2   r4   r8   rA   getpeernameOSErrorr9   r   AF_INETAF_INET6r6   r:   )r!   
attributesrF   rI   r:   s   ` @@@r"   extra_attributesz _SocketProvider.extra_attributes:   s    E ""$C)) , &&(@4

	/6t7G7G7S7S7U/VH
 9IJ556 ""}'<'<m>T>T&UU9 112 #&qk:M
?667!  	H	s    C+ +C98C9c                     y r   r   r    s    r"   rA   z_SocketProvider._raw_socketY   s     	r/   N)r*   zMapping[Any, Callable[[], Any]])r*   r7   )r,   r-   r.   propertyrR   r   rA   r   r/   r"   r=   r=   9   s0     <   r/   r=   c                      e Zd ZdZy)SocketStreamzu
    Transports bytes over a socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    Nr,   r-   r.   __doc__r   r/   r"   rV   rV   _       r/   rV   c                  0    e Zd Zedd       Zedd       Zy)UNIXSocketStreamc                   K   yw)z
        Send file descriptors along with a message to the peer.

        :param message: a non-empty bytestring
        :param fds: a collection of files (either numeric file descriptors or open file
            or socket objects)
        Nr   )r!   messagefdss      r"   send_fdszUNIXSocketStream.send_fdsh        r$   c                   K   yw)a  
        Receive file descriptors along with a message from the peer.

        :param msglen: length of the message to expect from the peer
        :param maxfds: maximum number of file descriptors to expect from the peer
        :return: a tuple of (message, file descriptors)
        Nr   )r!   msglenmaxfdss      r"   receive_fdszUNIXSocketStream.receive_fdsr   r`   r$   N)r]   bytesr^   zCollection[int | IOBase]r*   r+   )rb   r5   rc   r5   r*   ztuple[bytes, list[int]])r,   r-   r.   r   r_   rd   r   r/   r"   r[   r[   g   s(       r/   r[   c                  8    e Zd ZdZedd       Z	 d	 	 	 	 	 ddZy)SocketListenerz}
    Listens to incoming socket connections.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    c                   K   yw)zAccept an incoming connection.Nr   r    s    r"   acceptzSocketListener.accept   r`   r$   Nc                
  K   ddl m} t               4 d {   }||j                   |              d {   }	 | j	                          d {   }|j                  ||       +7 P7 27 # 1 d {  7  sw Y   y xY ww)Nr   )create_task_group) rk   r   enter_async_contextri   
start_soon)r!   handler
task_grouprk   stackstreams         r"   servezSocketListener.serve   s     
 	)!# 	7 	7u!#(#<#<=N=P#QQ
#{{},%%gv6 		7Q -	7 	7 	7sT   BA(BA.A*A.A,A.(B*A.,A..B 4A75B <B)r*   rV   r   )ro   zCallable[[SocketStream], Any]rp   zTaskGroup | Noner*   r+   )r,   r-   r.   rX   r   ri   rs   r   r/   r"   rg   rg   }   sA     - - (,7.7 %7 
	7r/   rg   c                      e Zd ZdZddZy)	UDPSocketz{
    Represents an unconnected UDP socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    c                H   K   | j                  |||ff       d{   S 7 w)z^
        Alias for :meth:`~.UnreliableObjectSendStream.send` ((data, (host, port))).

        Nsend)r!   datahostports       r"   sendtozUDPSocket.sendto   s&     
 YYtTl34444s   " "N)ry   re   rz   strr{   r5   r*   r+   r,   r-   r.   rX   r|   r   r/   r"   ru   ru      s    5r/   ru   c                      e Zd ZdZy)ConnectedUDPSocketzy
    Represents an connected UDP socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    NrW   r   r/   r"   r   r      rY   r/   r   c                      e Zd ZdZddZy)UNIXDatagramSocketz
    Represents an unconnected Unix datagram socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    c                D   K   | j                  ||f       d{   S 7 w)zCAlias for :meth:`~.UnreliableObjectSendStream.send` ((data, path)).Nrw   )r!   ry   paths      r"   r|   zUNIXDatagramSocket.sendto   s     YYd|,,,,s     N)ry   re   r   r}   r*   r+   r~   r   r/   r"   r   r      s    -r/   r   c                      e Zd ZdZy)ConnectedUNIXDatagramSocketz
    Represents a connected Unix datagram socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    NrW   r   r/   r"   r   r      rY   r/   r   )5
__future__r   socketabcr   collections.abcr   r   r   
contextlibr   ior	   	ipaddressr
   r   r   typesr   typingr   r   r   _core._typedattrr   r   r   _streamsr   r   r   _tasksr   r}   IPAddressTypetupler5   IPSockAddrTyper3   re   UDPPacketTypeUNIXDatagramPacketTyper   r   r1   r=   rV   r[   rg   ru   r   r   r   r   r/   r"   <module>r      s7   "   9 9 %  .    & & 
 C B c;34sCx^S()e^+,ucz* :
 
)' )#, #L: | ,7Xl+_ 765&}5 5/6 -12O-"8"? r/   