
    Mhv                       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-          Z4dS )%    )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dS )_NullAsyncContextManagerreturnNonec                
   K   d S N selfs    R/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/anyio/abc/_sockets.py
__aenter__z#_NullAsyncContextManager.__aenter__   s          exc_typetype[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | Nonebool | Nonec                
   K   d S r    r!   )r#   r'   r)   r+   s       r$   	__aexit__z"_NullAsyncContextManager.__aexit__!   s       tr&   N)r   r   )r'   r(   r)   r*   r+   r,   r   r-   )__name__
__module____qualname__r%   r/   r!   r&   r$   r   r      s<                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
<   dS )SocketAttributer   familySockAddrTypelocal_addressint
local_portsocket.socket
raw_socketremote_addressremote_portN)r0   r1   r2   r   r5   __annotations__r7   r9   r;   r<   r=   r!   r&   r$   r4   r4   *   s         +O--F----"1/"3"3M3333%o''J'''' / 1 1J1111#2?#4#4N4444&((K((((((r&   r4   c                  N    e Zd Zedd            Zeedd                        ZdS )	_SocketProviderr   Mapping[Any, Callable[[], Any]]c                    ddl m t          j         fdt          j         fdt          j         fdi}	   j                                                  n# t          $ r d Y nw xY wfd|t          j	        <    j        j        t          j        t          j        fv r. fd|t          j        <   d         fd	|t          j        <   |S )
Nr   )convert_ipv6_sockaddrc                      j         j        S r    )_raw_socketr5   r"   s   r$   <lambda>z2_SocketProvider.extra_attributes.<locals>.<lambda>?   s    D,<,C r&   c                 H      j                                                   S r    rE   getsockname)convertr#   s   r$   rF   z2_SocketProvider.extra_attributes.<locals>.<lambda>@   s%    77 ,,..4 4 r&   c                      j         S r    )rE   r"   s   r$   rF   z2_SocketProvider.extra_attributes.<locals>.<lambda>C   s
    0@ r&   c                      S r    r!   )peernames   r$   rF   z2_SocketProvider.extra_attributes.<locals>.<lambda>L   s     r&   c                 B     j                                         d         S )Nr   rH   r"   s   r$   rF   z2_SocketProvider.extra_attributes.<locals>.<lambda>Q   s    (4466q9 r&   r   c                      S r    r!   )r=   s   r$   rF   z2_SocketProvider.extra_attributes.<locals>.<lambda>U   s    + r&   )_core._socketsrC   r4   r5   r7   r;   rE   getpeernameOSErrorr<   r   AF_INETAF_INET6r9   r=   )r#   
attributesrJ   rM   r=   s   ` @@@r$   extra_attributesz _SocketProvider.extra_attributes:   s1   EEEEEE "$C$C$C$C) , , , , , &(@(@(@(@4

	/6wt7G7S7S7U7U/V/VHH 	 	 	HHH	 9I9I9I9IJ56 "}'<m>T&UUU9999 12 #&qk:M:M:M:M
?67s   "A A.-A.r:   c                    d S r    r!   r"   s    r$   rE   z_SocketProvider._raw_socketY   s	     	r&   N)r   rA   )r   r:   )r0   r1   r2   propertyrV   r   rE   r!   r&   r$   r@   r@   9   s\           X<    ^ X  r&   r@   c                      e Zd ZdZdS )SocketStreamzu
    Transports bytes over a socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    Nr0   r1   r2   __doc__r!   r&   r$   rZ   rZ   _              r&   rZ   c                  >    e Zd Zedd            Zedd            ZdS )UNIXSocketStreammessagebytesfdsCollection[int | IOBase]r   r   c                
   K   dS )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#   r`   rb   s      r$   send_fdszUNIXSocketStream.send_fdsh   
        r&   msglenr8   maxfdstuple[bytes, list[int]]c                
   K   dS )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#   rg   rh   s      r$   receive_fdszUNIXSocketStream.receive_fdsr   rf   r&   N)r`   ra   rb   rc   r   r   )rg   r8   rh   r8   r   ri   )r0   r1   r2   r   re   rk   r!   r&   r$   r_   r_   g   sR           ^    ^  r&   r_   c                  6    e Zd ZdZedd            Z	 dddZdS )SocketListenerz}
    Listens to incoming socket connections.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    r   rZ   c                
   K   dS )zAccept an incoming connection.Nr!   r"   s    r$   acceptzSocketListener.accept   rf   r&   NhandlerCallable[[SocketStream], Any]
task_groupTaskGroup | Noner   c                  K   ddl m} t                      4 d {V }|#|                     |                       d {V }	 |                                  d {V }|                    ||           1# 1 d {V swxY w Y   d S )Nr   )create_task_group) ru   r   enter_async_contextro   
start_soon)r#   rp   rr   ru   stackstreams         r$   servezSocketListener.serve   s     
 	)(((((!## 	7 	7 	7 	7 	7 	7 	7u!#(#<#<=N=N=P=P#Q#QQQQQQQ
7#{{}},,,,,,%%gv6667		7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   AA55
A?A?)r   rZ   r    )rp   rq   rr   rs   r   r   )r0   r1   r2   r\   r   ro   r{   r!   r&   r$   rm   rm   }   s\          - - - ^- (,7 7 7 7 7 7 7r&   rm   c                      e Zd ZdZdd
ZdS )	UDPSocketz{
    Represents an unconnected UDP socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    datara   hoststrportr8   r   r   c                D   K   |                      |||ff           d{V S )z^
        Alias for :meth:`~.UnreliableObjectSendStream.send` ((data, (host, port))).

        Nsend)r#   r~   r   r   s       r$   sendtozUDPSocket.sendto   s5      
 YYtTl3444444444r&   N)r~   ra   r   r   r   r8   r   r   r0   r1   r2   r\   r   r!   r&   r$   r}   r}      s2         5 5 5 5 5 5r&   r}   c                      e Zd ZdZdS )ConnectedUDPSocketzy
    Represents an connected UDP socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    Nr[   r!   r&   r$   r   r      r]   r&   r   c                      e Zd ZdZd
dZd	S )UNIXDatagramSocketz
    Represents an unconnected Unix datagram socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    r~   ra   pathr   r   r   c                @   K   |                      ||f           d{V S )zCAlias for :meth:`~.UnreliableObjectSendStream.send` ((data, path)).Nr   )r#   r~   r   s      r$   r   zUNIXDatagramSocket.sendto   s.      YYd|,,,,,,,,,r&   N)r~   ra   r   r   r   r   r   r!   r&   r$   r   r      s2         - - - - - -r&   r   c                      e Zd ZdZdS )ConnectedUNIXDatagramSocketz
    Represents a connected Unix datagram socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    Nr[   r!   r&   r$   r   r      r]   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tupler8   IPSockAddrTyper6   ra   UDPPacketTypeUNIXDatagramPacketTyper   r   r4   r@   rZ   r_   rm   r}   r   r   r   r!   r&   r$   <module>r      sf   " " " " " "        9 9 9 9 9 9 9 9 9 9 % % % % % %       . . . . . . . .                   & & & & & & & & & &         
 C B B B B B B B B B      c;34sCx^S()e^+,ucz* 7:
 
 
 
 
 
 
 
) ) ) ) )' ) ) )# # # # #, # # #L    :       |   ,7 7 7 7 7Xl+_ 7 7 765 5 5 5 5&}5 5 5 5    /6   - - - - -12O- - -    "8"?     r&   