
     @g{                       d dl mZ d dlZd dl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mZmZmZmZmZ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  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e          Z) G d de          Z* G d dee*          Z+ G d de+          Z, G d dee+         e*          Z- G d dee'         e*          Z. G d dee&         e*          Z/dS )    )annotationsN)abstractmethod)AsyncExitStack)IOBase)IPv4AddressIPv6Address)AddressFamily)AnyCallable
CollectionMappingTupleTypeVarUnion   )create_task_group)TypedAttributeProviderTypedAttributeSettyped_attribute   )
ByteStreamListenerUnreliableObjectStream)	TaskGroupT_Retvalc                      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)__name__
__module____qualname__r   r   __annotations__r    r"   r$   r%   r&        F/var/www/piapp/venv/lib/python3.11/site-packages/anyio/abc/_sockets.pyr   r   #   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,   r   c                  N    e Zd Zedd            Zeedd                        ZdS )	_SocketProviderreturn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 N)_raw_socketr   selfs   r-   <lambda>z2_SocketProvider.extra_attributes.<locals>.<lambda>8   s    D,<,C r,   c                 H      j                                                   S r5   r6   getsockname)convertr8   s   r-   r9   z2_SocketProvider.extra_attributes.<locals>.<lambda>9   s%    77 ,,..4 4 r,   c                      j         S r5   )r6   r7   s   r-   r9   z2_SocketProvider.extra_attributes.<locals>.<lambda><   s
    0@ r,   c                      S r5   r+   )peernames   r-   r9   z2_SocketProvider.extra_attributes.<locals>.<lambda>E   s     r,   c                 B     j                                         d         S )Nr   r;   r7   s   r-   r9   z2_SocketProvider.extra_attributes.<locals>.<lambda>K   s    (4466q9 r,   r   c                      S r5   r+   )r&   s   r-   r9   z2_SocketProvider.extra_attributes.<locals>.<lambda>N   s    + r,   )_core._socketsr3   r   r   r    r$   r6   getpeernameOSErrorr%   r	   AF_INETAF_INET6r"   r&   )r8   
attributesr=   r@   r&   s   ` @@@r-   extra_attributesz _SocketProvider.extra_attributes3   s6   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 * #&qk:M:M:M:M
?67s   "A A.-A.r#   c                    d S r5   r+   r7   s    r-   r6   z_SocketProvider._raw_socketR   s	     	r,   N)r0   r1   )r0   r#   )r'   r(   r)   propertyrI   r   r6   r+   r,   r-   r/   r/   2   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r'   r(   r)   __doc__r+   r,   r-   rM   rM   X              r,   rM   c                  >    e Zd Zedd            Zedd            ZdS )UNIXSocketStreammessagebytesfdsCollection[int | IOBase]r0   Nonec                
   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+   )r8   rS   rU   s      r-   send_fdszUNIXSocketStream.send_fdsa   
        r,   msglenr!   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+   )r8   r[   r\   s      r-   receive_fdszUNIXSocketStream.receive_fdsk   rZ   r,   N)rS   rT   rU   rV   r0   rW   )r[   r!   r\   r!   r0   r]   )r'   r(   r)   r   rY   r_   r+   r,   r-   rR   rR   `   sR           ^    ^  r,   rR   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`.
    r0   rM   c                
   K   dS )zAccept an incoming connection.Nr+   r7   s    r-   acceptzSocketListener.accept}   rZ   r,   NhandlerCallable[[SocketStream], Any]
task_groupTaskGroup | NonerW   c                  K   t                      4 d {V }|'|                    t                                 d {V }	 |                                  d {V }|                    ||           1# 1 d {V swxY w Y   d S r5   )r   enter_async_contextr   rc   
start_soon)r8   rd   rf   
exit_stackstreams        r-   servezSocketListener.serve   s      
 "## 	7 	7 	7 	7 	7 	7 	7z!#-#A#ABSBUBU#V#VVVVVVV
7#{{}},,,,,,%%gv6667		7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   AA33
A= A=)r0   rM   r5   )rd   re   rf   rg   r0   rW   )r'   r(   r)   rO   r   rc   rm   r+   r,   r-   ra   ra   v   s\          - - - ^- (,7 7 7 7 7 7 7r,   ra   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`.
    datarT   hoststrportr!   r0   rW   c                D   K   |                      |||ff           d{V S )zKAlias for :meth:`~.UnreliableObjectSendStream.send` ((data, (host, port))).N)send)r8   rp   rq   rs   s       r-   sendtozUDPSocket.sendto   s3      YYtTl3444444444r,   N)rp   rT   rq   rr   rs   r!   r0   rW   )r'   r(   r)   rO   rv   r+   r,   r-   ro   ro      s2         5 5 5 5 5 5r,   ro   c                      e Zd ZdZdS )ConnectedUDPSocketzy
    Represents an connected UDP socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    NrN   r+   r,   r-   rx   rx      rP   r,   rx   )0
__future__r   socketabcr   
contextlibr   ior   	ipaddressr   r   r	   typingr
   r   r   r   r   r   r   _core._tasksr   _core._typedattrr   r   r   _streamsr   r   r   _tasksr   rr   IPAddressTyper!   IPSockAddrTyper   rT   UDPPacketTyper   r   r/   rM   rR   ra   ro   rx   r+   r,   r-   <module>r      s   " " " " " "        % % % % % %       . . . . . . . .                              - , , , , ,         
 C B B B B B B B B B      c;34sCx^S()e^+,7:) ) ) ) )' ) ) )# # # # #, # # #L    :       |   ,7 7 7 7 7Xl+_ 7 7 72	5 	5 	5 	5 	5&}5 	5 	5 	5    /6     r,   