HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: sport3497 (1034)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib64/python3.10/site-packages/anyio/abc/__pycache__/_sockets.cpython-310.pyc
o

�h�3�@s,UddlmZddlZddlZddlZddlmZddlmZm	Z	m
Z
ddlmZddl
mZddlmZmZddlmZdd	lmZmZmZd
dlmZd
dlmZmZmZd
dlmZmZm Z d
dl!m"Z"ej#dkrsddlm$Z$nddl%m$Z$ee&eefZ'de(d<e)e&e*fZ+de(d<ee+e&fZ,de(d<e)e-e+fZ.de(d<e)e-e&fZ/de(d<ed�Z0ej1fddd�d:d&d'�Z2Gd(d)�d)e�Z3Gd*d+�d+e�Z4Gd,d-�d-ee4�Z5Gd.d/�d/e5�Z6Gd0d1�d1ee5e4�Z7Gd2d3�d3e e.e4�Z8Gd4d5�d5e e-e4�Z9Gd6d7�d7e e/e4�Z:Gd8d9�d9e e-e4�Z;dS);�)�annotationsN)�abstractmethod)�Callable�
Collection�Mapping)�AsyncExitStack)�IOBase)�IPv4Address�IPv6Address)�
AddressFamily)�Any�TypeVar�Union�)�get_async_backend)�TypedAttributeProvider�TypedAttributeSet�typed_attribute�)�
ByteStream�Listener�UnreliableObjectStream)�	TaskGroup)��
)�	TypeAliasr�
IPAddressType�IPSockAddrType�SockAddrType�
UDPPacketType�UNIXDatagramPacketType�T_RetvalF)�require_connected�
require_bound�
sock_or_fd�socket.socket | int�	sock_type�socket.SocketKind�addr_family�socket.AddressFamilyr"�boolr#�return�
socket.socketc
Cs�t|t�r4ztj|d�}Wn:ty3}z|jtjkr td�|�|r'td�|�|r.td�|��d}~wwt|tj�r=|}ntdt|�j	�d���zo|rcz|�
�Wntyb}ztd�|�d}~ww|r�z|jtjtj
fvrv|��d}n|��}Wnty�d}Ynw|s�td��|tjkr�|j|kr�td|j�d	|jj����|j|kr�td
|j�d	|jj����Wnty�t|t�r�|���w|�d�|S)N)�filenoz.the file descriptor does not refer to a socketzthe socket must be connectedz+the socket must be bound to a local addresszexpected an int or socket, got z insteadrz"address family mismatch: expected z, got zsocket type mismatch: expected F)�
isinstance�int�socket�OSError�errno�ENOTSOCK�
ValueError�	TypeError�type�__qualname__�getpeername�family�AF_INET�AF_INET6�getsockname�	AF_UNSPEC�name�
BaseException�detach�setblocking)r$r&r(r"r#�sock�exc�
bound_addr�rE�E/usr/local/CyberCP/lib/python3.10/site-packages/anyio/abc/_sockets.py�_validate_socket$sv
��

���
����
��
��
�
rGc@sfeZdZUdZe�Zded<e�Zded<e�Zded<e�Z	ded	<e�Z
ded
<e�Zded<dS)
�SocketAttributea�
    .. attribute:: family
        :type: socket.AddressFamily

        the address family of the underlying socket

    .. attribute:: local_address
        :type: tuple[str, int] | str

        the local address the underlying socket is connected to

    .. attribute:: local_port
        :type: int

        for IP based sockets, the local port the underlying socket is bound to

    .. attribute:: raw_socket
        :type: socket.socket

        the underlying stdlib socket object

    .. attribute:: remote_address
        :type: tuple[str, int] | str

        the remote address the underlying socket is connected to

    .. attribute:: remote_port
        :type: int

        for IP based sockets, the remote port the underlying socket is connected to
    rr9r�
local_addressr/�
local_portr,�
raw_socket�remote_address�remote_portN)�__name__�
__module__r7�__doc__rr9�__annotations__rIrJrKrLrMrErErErFrHis
 rHc@s,eZdZed	dd��Zeed
dd���ZdS)�_SocketProviderr+�Mapping[Any, Callable[[], Any]]cs�ddlm�tj�fdd�tj��fdd�tj�fdd�i}z	��j����Wnty2d�Ynw�dur@�fdd�|tj	<�jjt
jt
jfvrd�fdd�|tj
<�durd�d	��fd
d�|tj<|S)Nr)�convert_ipv6_sockaddrcs�jjS�N)�_raw_socketr9rE��selfrErF�<lambda>�sz2_SocketProvider.extra_attributes.<locals>.<lambda>cs��j���SrU�rVr<rE)�convertrXrErFrY�s�cs�jSrU)rVrErWrErFrY��c��SrUrErE)�peernamerErFrY��cs�j��dS)NrrZrErWrErFrY�srcr]rUrErE)rMrErFrY�r_)�_core._socketsrTrHr9rIrKrVr8r1rLrr:r;rJrM)rX�
attributesrE)r[r^rMrXrF�extra_attributes�s&��
�z _SocketProvider.extra_attributesr,cCsdSrUrErWrErErFrV�sz_SocketProvider._raw_socketN)r+rS)r+r,)rNrOr7�propertyrbrrVrErErErFrR�srRc@�eZdZdZeddd��ZdS)	�SocketStreamzu
    Transports bytes over a socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    r$r%r+c��$�t|tjdd�}t��|�IdHS)aH
        Wrap an existing socket object or file descriptor as a socket stream.

        The newly created socket wrapper takes ownership of the socket being passed in.
        The existing socket must already be connected.

        :param sock_or_fd: a socket object or file descriptor
        :return: a socket stream

        T�r"N)rGr0�SOCK_STREAMr�wrap_stream_socket��clsr$rBrErErF�from_socket���zSocketStream.from_socketN)r$r%r+re�rNrOr7rP�classmethodrlrErErErFre��rec@s6eZdZeddd��Zeddd��Zeddd��ZdS)�UNIXSocketStreamr$r%r+c��(�t|tjtjdd�}t��|�IdHS)aR
        Wrap an existing socket object or file descriptor as a UNIX socket stream.

        The newly created socket wrapper takes ownership of the socket being passed in.
        The existing socket must already be connected.

        :param sock_or_fd: a socket object or file descriptor
        :return: a UNIX socket stream

        TrgN)rGr0rh�AF_UNIXr�wrap_unix_stream_socketrjrErErFrl�s
��zUNIXSocketStream.from_socket�message�bytes�fds�Collection[int | IOBase]�Nonec���dS)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)
        NrE)rXrurwrErErF�send_fds�r\zUNIXSocketStream.send_fds�msglenr/�maxfds�tuple[bytes, list[int]]c�rz)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)
        NrE)rXr|r}rErErF�receive_fds�r\zUNIXSocketStream.receive_fdsN)r$r%r+rq)rurvrwrxr+ry)r|r/r}r/r+r~)rNrOr7rorlrr{rrErErErFrq�s	rqc@s:eZdZdZeddd��Zeddd	��Z	
dddd�Zd
S)�SocketListenerz}
    Listens to incoming socket connections.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    r$r%r+c�rf)a
        Wrap an existing socket object or file descriptor as a socket listener.

        The newly created listener takes ownership of the socket being passed in.

        :param sock_or_fd: a socket object or file descriptor
        :return: a socket listener

        T�r#N)rGr0rhr�wrap_listener_socketrjrErErFrl�s�zSocketListener.from_socketrec�rz)zAccept an incoming connection.NrErWrErErF�acceptr\zSocketListener.acceptN�handler�Callable[[SocketStream], Any]�
task_group�TaskGroup | Noneryc	�sp�ddlm}t�4IdH�}|dur|�|��IdH}	|��IdH}|�||�q1IdHs1wYdS)Nr)�create_task_group)�r�r�enter_async_contextr��
start_soon)rXr�r�r��stack�streamrErErF�serves���zSocketListener.serve)r$r%r+r�)r+rerU)r�r�r�r�r+ry)	rNrOr7rProrlrr�r�rErErErFr��s�r�c@s(eZdZdZeddd��Zddd�ZdS)�	UDPSocketz{
    Represents an unconnected UDP socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    r$r%r+c�rf)aI
        Wrap an existing socket object or file descriptor as a UDP socket.

        The newly created socket wrapper takes ownership of the socket being passed in.
        The existing socket must be bound to a local address.

        :param sock_or_fd: a socket object or file descriptor
        :return: a UDP socket

        Tr�N)rGr0�
SOCK_DGRAMr�wrap_udp_socketrjrErErFrl)rmzUDPSocket.from_socket�datarv�host�str�portr/ryc�s�|�|||ff�IdHS)z^
        Alias for :meth:`~.UnreliableObjectSendStream.send` ((data, (host, port))).

        N��send)rXr�r�r�rErErF�sendto8s�zUDPSocket.sendtoN)r$r%r+r�)r�rvr�r�r�r/r+ry�rNrOr7rProrlr�rErErErFr�"s
r�c@rd)	�ConnectedUDPSocketzy
    Represents an connected UDP socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    r$r%r+c�rf)aV
        Wrap an existing socket object or file descriptor as a connected UDP socket.

        The newly created socket wrapper takes ownership of the socket being passed in.
        The existing socket must already be connected.

        :param sock_or_fd: a socket object or file descriptor
        :return: a connected UDP socket

        TrgN)rGr0r�r�wrap_connected_udp_socketrjrErErFrlGs��zConnectedUDPSocket.from_socketN)r$r%r+r�rnrErErErFr�@rpr�c@s(eZdZdZeddd��Zddd
�ZdS)�UNIXDatagramSocketz�
    Represents an unconnected Unix datagram socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    r$r%r+c�s$�t|tjtj�}t��|�IdHS)a'
        Wrap an existing socket object or file descriptor as a UNIX datagram
        socket.

        The newly created socket wrapper takes ownership of the socket being passed in.

        :param sock_or_fd: a socket object or file descriptor
        :return: a UNIX datagram socket

        N)rGr0r�rsr�wrap_unix_datagram_socketrjrErErFrlds�zUNIXDatagramSocket.from_socketr�rv�pathr�ryc�s�|�||f�IdHS)zCAlias for :meth:`~.UnreliableObjectSendStream.send` ((data, path)).Nr�)rXr�r�rErErFr�vs�zUNIXDatagramSocket.sendtoN)r$r%r+r�)r�rvr�r�r+ryr�rErErErFr�[s
r�c@rd)	�ConnectedUNIXDatagramSocketz�
    Represents a connected Unix datagram socket.

    Supports all relevant extra attributes from :class:`~SocketAttribute`.
    r$r%r+c�rr)ar
        Wrap an existing socket object or file descriptor as a connected UNIX datagram
        socket.

        The newly created socket wrapper takes ownership of the socket being passed in.
        The existing socket must already be connected.

        :param sock_or_fd: a socket object or file descriptor
        :return: a connected UNIX datagram socket

        TrgN)rGr0r�rsr�#wrap_connected_unix_datagram_socketrjrErErFrl�s
��z'ConnectedUNIXDatagramSocket.from_socketN)r$r%r+r�rnrErErErFr�{rpr�)r$r%r&r'r(r)r"r*r#r*r+r,)<�
__future__rr2r0�sys�abcr�collections.abcrrr�
contextlibr�ior�	ipaddressr	r
r�typingrr
r�_core._eventloopr�_core._typedattrrrr�_streamsrrr�_tasksr�version_infor�typing_extensionsr�rrQ�tupler/rrrvrr r!r=rGrHrRrerqr�r�r�r�r�rErErErF�<module>sP
��E)&',
�