
    "dz                     0   d dl 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mZmZmZmZmZmZmZmZmZ dd	lmZmZmZ d
dlmZ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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-          Z2dS )    N)abstractmethod)IOBase)IPv4AddressIPv6Address)AddressFamily)TracebackType)AnyAsyncContextManagerCallable
CollectionDictListMappingOptionalTupleTypeTypeVarUnion   )TypedAttributeProviderTypedAttributeSettyped_attribute   )
ByteStreamListenerT_StreamUnreliableObjectStream)	TaskGroupT_Retvalc            	       j    e Zd ZddZdeee                  dee         dee         dee         fdZ	dS )	_NullAsyncContextManagerreturnNc                 
   K   d S N selfs    6D:\api_v1\venv\Lib\site-packages\anyio/abc/_sockets.py
__aenter__z#_NullAsyncContextManager.__aenter__&   s          exc_typeexc_valexc_tbc                 
   K   d S r$   r%   )r'   r+   r,   r-   s       r(   	__aexit__z"_NullAsyncContextManager.__aexit__)   s       tr*   )r"   N)
__name__
__module____qualname__r)   r   r   BaseExceptionr   boolr/   r%   r*   r(   r!   r!   %   sz           4./ -( '	
 
$     r*   r!   c                       e Zd ZU  e            Zeed<    e            Zeed<    e            Z	e
ed<    e            Zej        ed<    e            Zeed<    e            Ze
ed<   dS )SocketAttributefamilylocal_address
local_port
raw_socketremote_addressremote_portN)r0   r1   r2   r   r7   r   __annotations__r8   SockAddrTyper9   intr:   socketr;   r<   r%   r*   r(   r6   r6   2   s         +O--FM---"1/"3"3M<333%o''J''' / 1 1J111#2?#4#4NL444&((K(((((r*   r6   c                       e Zd Zedeeeg ef         f         fd            Zeede	j	        fd                        Z
dS )_SocketProviderr"   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_socketr7   r&   s   r(   <lambda>z2_SocketProvider.extra_attributes.<locals>.<lambda>G   s    D,<,C r*   c                  H      j                                                   S r$   rF   getsockname)convertr'   s   r(   rG   z2_SocketProvider.extra_attributes.<locals>.<lambda>H   s%    77 ,,..4 4 r*   c                       j         S r$   )rF   r&   s   r(   rG   z2_SocketProvider.extra_attributes.<locals>.<lambda>K   s
    0@ r*   c                       S r$   r%   )peernames   r(   rG   z2_SocketProvider.extra_attributes.<locals>.<lambda>V   s     r*   c                  B     j                                         d         S )Nr   rI   r&   s   r(   rG   z2_SocketProvider.extra_attributes.<locals>.<lambda>\   s    (4466q9 r*   r   c                       S r$   r%   )r<   s   r(   rG   z2_SocketProvider.extra_attributes.<locals>.<lambda>_   s    + r*   )_core._socketsrD   r6   r7   r8   r:   rF   getpeernameOSErrorr;   r   AF_INETAF_INET6r9   r<   )r'   
attributesrK   rN   r<   s   ` @@@r(   extra_attributesz _SocketProvider.extra_attributesB   s=   EEEEEE "$C$C$C$C) , , , , , &(@(@(@(@4

	29' ,,..3 3HH  	 	 	HHH	 9I9I9I9IJ56 "}'<m>T&UUU :999 * #&qk:M:M:M:M
?67s   "A A.-A.c                     d S r$   r%   r&   s    r(   rF   z_SocketProvider._raw_socketc   s	     	r*   N)r0   r1   r2   propertyr   r	   r   rW   r   r@   rF   r%   r*   r(   rB   rB   A   s        '#xC/@*@"A    X@ V]    ^ X  r*   rB   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(   r[   r[   i              r*   r[   c            
           e Zd Zededeeeef                  ddfd            Z	ededede
eee         f         fd            ZdS )	UNIXSocketStreammessagefdsr"   Nc                 
   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'   ra   rb   s      r(   send_fdszUNIXSocketStream.send_fdsr   
        r*   msglenmaxfdsc                 
   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'   rf   rg   s      r(   receive_fdszUNIXSocketStream.receive_fds~   re   r*   )r0   r1   r2   r   bytesr   r   r?   r   rd   r   r   ri   r%   r*   r(   r`   r`   q   s        		#-eCK.@#A			 	 	 ^	  S U5$s)CS=T    ^  r*   r`   c                   d    e Zd ZdZedefd            Z	 ddeege	f         de
e         ddfdZdS )	SocketListenerz}
    Listens to incoming socket connections.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    r"   c                 
   K   dS )zAccept an incoming connection.Nr%   r&   s    r(   acceptzSocketListener.accept   re   r*   Nhandler
task_groupc                    K   ddl m} | |            x}}nt                      }|4 d {V  	 |                                  d {V }|                    ||           1# 1 d {V swxY w Y   d S )Nr   )create_task_group) rr   r!   rn   
start_soon)r'   ro   rp   rr   context_managerstreams         r(   servezSocketListener.serve   s      	)((((( +<+<+>+>>J 788O" 	7 	7 	7 	7 	7 	7 	7 	77#{{}},,,,,,%%gv6667	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   3A!!
A+.A+r$   )r0   r1   r2   r]   r   r[   rn   r   r   r	   r   r   rw   r%   r*   r(   rl   rl      s          -l - - - ^- UY7 7
C07>Fy>Q7	7 7 7 7 7 7r*   rl   c                   *    e Zd ZdZdedededdfdZdS )	UDPSocketz{
    Represents an unconnected UDP socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    datahostportr"   Nc                 D   K   |                      |||ff           d{V S )zKAlias for :meth:`~.UnreliableObjectSendStream.send` ((data, (host, port))).N)send)r'   rz   r{   r|   s       r(   sendtozUDPSocket.sendto   s3      YYtTl3444444444r*   )r0   r1   r2   r]   rj   strr?   r   r%   r*   r(   ry   ry      sN         5 5c 5 5 5 5 5 5 5 5r*   ry   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   )3r@   abcr   ior   	ipaddressr   r   r   typesr   typingr	   r
   r   r   r   r   r   r   r   r   r   r   _core._typedattrr   r   r   _streamsr   r   r   r   _tasksr   r   IPAddressTyper?   IPSockAddrTyper>   rj   UDPPacketTyper   r!   r6   rB   r[   r`   rl   ry   r   r%   r*   r(   <module>r      s$                . . . . . . . .                                                      
 M L L L L L L L L L L L      c;34sCx^S()e^+,7:
 
 
 
 
 
 
 
) ) ) ) )' ) ) )% % % % %, % % %P    :       |   07 7 7 7 7Xl+_ 7 7 7:	5 	5 	5 	5 	5&}5 	5 	5 	5    /6     r*   