]L i3UddlmZddlZddlmcmZddlZddl Z ddl Z ddl m Z ddl mZmZmZddlmZddlmZddlmZmZddl mZdd lmZmZmZd d lmZd d lm Z m!Z!m"Z"d dl#m$Z$m%Z%m&Z&d dl'm(Z(e jRdk\rddlm*Z*nddl+m*Z*ee,eefZ-de.d<e/e,e0fZ1de.d<ee1e,fZ2de.d<e/e3e1fZ4de.d<e/e3e,fZ5de.d<edZ6e jnfddd d.dZ8Gdde!Z9Gdde Z:Gd d!e$e:Z;Gd"d#e;Z<Gd$d%e%e;e:Z=Gd&d'e&e4e:Z>Gd(d)e&e3e:Z?Gd*d+e&e5e:Z@Gd,d-e&e3e:ZAy)/) annotationsN)abstractmethod)Callable CollectionMapping)AsyncExitStack)IOBase) IPv4Address IPv6Address) AddressFamily)AnyTypeVarUnion)get_async_backend)TypedAttributeProviderTypedAttributeSettyped_attribute) ByteStreamListenerUnreliableObjectStream) TaskGroup) ) TypeAliasr IPAddressTypeIPSockAddrType SockAddrType UDPPacketTypeUNIXDatagramPacketTypeT_RetvalF)require_connected require_boundcft|tr tj|}n?t|tjr|}n"tdt|jd |r |j|r^ |jtjtjfvr|jd}n|j}|s t d|tjk7r>|j|k7r/t d|j d |jj |j|k7r/t d |j d |jj  |j'd |S#t$rK}|jtj k(r t d||r t d||r t d|d}~wwxYw#t$r}t d|d}~wwxYw#t$rd}Y2wxYw#t"$r"t|tr|j%wxYw) 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) isinstanceintsocketOSErrorerrnoENOTSOCK ValueError TypeErrortype __qualname__ getpeernamefamilyAF_INETAF_INET6 getsockname AF_UNSPECname BaseExceptiondetach setblocking) sock_or_fd sock_type addr_familyr#r$sockexc bound_addrs X/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/anyio/abc/_sockets.py_validate_socketrB$s"*c" == 3D J .-d:.>.K.K-LH U  "  J  "  ";;6>>6??"CC!%!1!1!3A!6J!%!1!1!3J !NOO &** *t{{k/I4[5E5E4Ff;;##$&  99 !1)..1A GWX  " U Ko yyENN* D# !?@cI !NOUXX , J !?@cI J "!  "  j# & KKM snE?)H,G<H?AG3BH? GAGG G0 G++G00H3 H>HHH+H0ceZdZUdZeZded<eZded<eZded<eZ ded <eZ ded <eZ ded <y ) 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 r r2r local_addressr( local_port socket.socket raw_socketremote_address remote_portN) __name__ __module__r0__doc__rr2__annotations__rErFrHrIrJrArDrDisX@,-FM-"1"3M<3%'J' / 1J 1#2#4NL4&(K(rPrDc:eZdZeddZeeddZy)_SocketProvidercddlmtjfdtjfdtj fdi} j jfd|tj<j jtjtjfvr3fd|tj<dfd |tj<|S#t$rdYwxYw) Nr)convert_ipv6_sockaddrc0jjSN) _raw_socketr2selfsrAz2_SocketProvider.extra_attributes..sD,<,<,C,CrPcDjjSrVrWr5)convertrYsrArZz2_SocketProvider.extra_attributes..s7  ,,.4rPcjSrV)rWrXsrArZz2_SocketProvider.extra_attributes..s 0@0@rPcSrVrO)peernamesrArZz2_SocketProvider.extra_attributes..srPc>jjdS)Nrr\rXsrArZz2_SocketProvider.extra_attributes..s((446q9rPrcSrVrO)rJsrArZz2_SocketProvider.extra_attributes..s+rP)_core._socketsrTrDr2rErHrWr1r*rIr r3r4rFrJ)rY attributesr]r`rJs` @@@rAextra_attributesz _SocketProvider.extra_attributessE  " "$C  ) ),  & &(@ 4  /6t7G7G7S7S7U/VH  9IJ55 6    " "}'<'T>T&U U9 11 2#&qk :M ?667! H s C++ C98C9cyrVrOrXs rArWz_SocketProvider._raw_sockets rPN)returnzMapping[Any, Callable[[], Any]])rgrG)rKrLr0propertyrerrWrOrPrArRrRs0 <  rPrRc"eZdZdZeddZy) SocketStreamzu Transports bytes over a socket. Supports all relevant extra attributes from :class:`~SocketAttribute`. cKt|tjd}tj |d{S7w)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 Tr#N)rBr) SOCK_STREAMrwrap_stream_socketclsr;r>s rA from_socketzSocketStream.from_sockets7 F,>,>RVW&(;;DAAAA9AAAN)r;socket.socket | intrgrjrKrLr0rM classmethodrqrOrPrArjrjs  B BrPrjcBeZdZeddZeddZeddZy)UNIXSocketStreamcKt|tjtjd}t j |d{S7w)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 TrlN)rBr)rmAF_UNIXrwrap_unix_stream_socketros rArqzUNIXSocketStream.from_socketsA **FNNd '(@@FFFFAA A Ac Kyw)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) NrO)rYmessagefdss rAsend_fdszUNIXSocketStream.send_fdsc Kyw)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) NrO)rYmsglenmaxfdss rA receive_fdszUNIXSocketStream.receive_fdsrrN)r;rsrgrw)r}bytesr~zCollection[int | IOBase]rgNone)rr(rr(rgztuple[bytes, list[int]])rKrLr0rurqrrrrOrPrArwrws>GG     rPrwcReZdZdZe ddZeddZ d d dZy) SocketListenerz} Listens to incoming socket connections. Supports all relevant extra attributes from :class:`~SocketAttribute`. cKt|tjd}tj |d{S7w)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 Tr$N)rBr)rmrwrap_listener_socketros rArqzSocketListener.from_sockets6 F,>,>dS&(==dCCCCrrc Kyw)zAccept an incoming connection.NrOrXs rAacceptzSocketListener.acceptrrNc Kddlm}t4d{}||j|d{} |j d{}|j ||+7P727#1d{7swYyxYww)Nr)create_task_group)rrenter_async_contextr start_soon)rYhandler task_grouprstackstreams rAservezSocketListener.serves )!# 7 7u!#(#<#<=N=P#QQ #{{},%%gv6  7Q-  7 7 7sTBA(BA.A*A.A,A.(B*A.,A..B4A7 5B<B)r;rsrgr)rgrjrV)rzCallable[[SocketStream], Any]rzTaskGroup | Nonergr) rKrLr0rMrurqrrrrOrPrArrsk D'D DD -- (, 7. 7% 7  7rPrc*eZdZdZeddZddZy) UDPSocketz{ Represents an unconnected UDP socket. Supports all relevant extra attributes from :class:`~SocketAttribute`. cKt|tjd}tj |d{S7w)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 TrN)rBr) SOCK_DGRAMrwrap_udp_socketros rArqzUDPSocket.from_socket)s6 F,=,=TR&(88>>>>rrcHK|j|||ffd{S7w)z^ Alias for :meth:`~.UnreliableObjectSendStream.send` ((data, (host, port))). Nsend)rYdatahostports rAsendtozUDPSocket.sendto8s& YYtTl34444s " "N)r;rsrgr)rrrstrrr(rgrrKrLr0rMrurqrrOrPrArr"s   ? ?5rPrc"eZdZdZeddZy)ConnectedUDPSocketzy Represents an connected UDP socket. Supports all relevant extra attributes from :class:`~SocketAttribute`. cKt|tjd}tj |d{S7w)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 TrlN)rBr)rrwrap_connected_udp_socketros rArqzConnectedUDPSocket.from_socketGs=    "  '(BB4HHHHrrN)r;rsrgrrtrOrPrArr@s IIrPrc2eZdZdZe ddZddZy)UNIXDatagramSocketz Represents an unconnected Unix datagram socket. Supports all relevant extra attributes from :class:`~SocketAttribute`. cKt|tjtj}t j |d{S7w)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)rBr)rryrwrap_unix_datagram_socketros rArqzUNIXDatagramSocket.from_socketds: F,=,=v~~N&(BB4HHHHsAAA  AcDK|j||fd{S7w)zCAlias for :meth:`~.UnreliableObjectSendStream.send` ((data, path)).Nr)rYrpaths rArzUNIXDatagramSocket.sendtovsYYd|,,,,s   N)r;rsrgr)rrrrrgrrrOrPrArr[s6 I'I II"-rPrc*eZdZdZe ddZy)ConnectedUNIXDatagramSocketz Represents a connected Unix datagram socket. Supports all relevant extra attributes from :class:`~SocketAttribute`. cKt|tjtjd}t j |d{S7w)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 TrlN)rBr)rryr#wrap_connected_unix_datagram_socketros rArqz'ConnectedUNIXDatagramSocket.from_socketsA  ))6>>T '(LLTRRRRr{N)r;rsrgrrtrOrPrArr{s1 S'S %SSrPr) r;rsr<zsocket.SocketKindr=zsocket.AddressFamilyr#boolr$rrgrG)B __future__rbuiltins @py_builtins_pytest.assertion.rewrite assertionrewrite @pytest_arr+r)sysabcrcollections.abcrrr contextlibrior ipaddressr r r typingr rr_core._eventloopr_core._typedattrrrr_streamsrrr_tasksr version_infortyping_extensionsrrrNtupler(rrrr r!r"r6rBrDrRrjrwrrrrrrOrPrArs" 99%. &&0 CBw + k;!>? y?!#s(O + 34 i4 !67 y7$)%*$5 5 :  )/(8(8B $ B#B B&B  B  BBJ&)'&)R# ,# LB:B.$ |$ N)7Xl+_)7X5&}55<I/6I6-12O-@S"8"?SrP