XjD3~UddlmZddlZddlZddlmZddlmZmZm Z ddl m Z ddl m Z ddlmZmZddlmZdd lmZmZmZd d lmZd d lmZmZmZd dlmZmZmZd dl m!Z!e"ezezZ#de$d<e%e"e&fZ'de$d<e'e"zZ(de$d<e%e)e'fZ*de$d<e%e)e"fZ+de$d<edZ,ejZfddd d,dZ.GddeZ/GddeZ0Gddee0Z1Gd d!e1Z2Gd"d#ee1e0Z3Gd$d%ee*e0Z4Gd&d'ee)e0Z5Gd(d)ee+e0Z6Gd*d+ee)e0Z7y)-) annotationsN)abstractmethod)Callable CollectionMapping)AsyncExitStack)IOBase) IPv4Address IPv6Address) AddressFamily)Any TypeAliasTypeVar)get_async_backend)TypedAttributeProviderTypedAttributeSettyped_attribute) ByteStreamListenerUnreliableObjectStream) TaskGroupr 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 f/mnt/ssd/data/Dropbox/adrian/vault-secondbrain/venv/lib/python3.12/site-packages/anyio/abc/_sockets.py_validate_socketr?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 r/r local_addressr% local_port socket.socket raw_socketremote_address remote_portN) __name__ __module__r-__doc__rr/__annotations__rBrCrErFrGr>rArAcsX@,-FM-"1"3M<3%'J' / 1J 1#2#4NL4&(K(rMrAc:eZdZeddZeeddZy)_SocketProvidercddlmtjfdtjfdtj fdi} j jfd|tj<j jtjtjfvr3fd|tj<dfd |tj<|S#t$rdYwxYw) Nr)convert_ipv6_sockaddrc0jjSN) _raw_socketr/selfsr>z2_SocketProvider.extra_attributes..sD,<,<,C,CrMcDjjSrSrTr2)convertrVsr>rWz2_SocketProvider.extra_attributes..s7  ,,.4rMcjSrS)rTrUsr>rWz2_SocketProvider.extra_attributes..s 0@0@rMcSrSrL)peernamesr>rWz2_SocketProvider.extra_attributes..srMc>jjdS)NrrYrUsr>rWz2_SocketProvider.extra_attributes..s  ,,.q1rMrcSrSrL)rGsr>rWz2_SocketProvider.extra_attributes..s+rM)_core._socketsrQrAr/rBrErTr.r'rFr r0r1rCrG)rV attributesrZr]rGs` @@@r>extra_attributesz _SocketProvider.extra_attributessE  " "$C  ) ),  & &(@ 4  /6t7G7G7S7S7U/VH  9IJ55 6    " "}'<'T>T&U U6J11 2#&qk :M ?667! H s C++ C98C9cyrSrLrUs r>rTz_SocketProvider._raw_sockets rMN)returnzMapping[Any, Callable[[], Any]])rdrD)rHrIr-propertyrbrrTrLrMr>rOrOs0 <  rMrOc"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)r?r& SOCK_STREAMrwrap_stream_socketclsr8r;s r> from_socketzSocketStream.from_sockets7 F,>,>RVW&(;;DAAAA9AAAN)r8socket.socket | intrdrgrHrIr-rJ classmethodrnrLrMr>rgrgs  B BrMrgcBeZdZeddZeddZeddZy)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 TriN)r?r&rjAF_UNIXrwrap_unix_stream_socketrls r>rnzUNIXSocketStream.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) NrL)rVmessagefdss r>send_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) NrL)rVmsglenmaxfdss r> receive_fdszUNIXSocketStream.receive_fdsr}r~N)r8rprdrt)rzbytesr{zCollection[int | IOBase]rdNone)rr%rr%rdztuple[bytes, list[int]])rHrIr-rrrnrr|rrLrMr>rtrts>GG     rMrtcReZdZdZe 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)r?r&rjrwrap_listener_socketrls r>rnzSocketListener.from_sockets6 F,>,>dS&(==dCCCCroc Kyw)zAccept an incoming connection.NrLrUs r>acceptzSocketListener.acceptr}r~Nc Kddlm}t4d{}||j|d{} |j d{}|j ||+7P727#1d{7swYyxYww)Nr)create_task_group)rrenter_async_contextr start_soon)rVhandler task_grouprstackstreams r>servezSocketListener.serve s )!# 7 7u!#(#<#<=N=P#QQ #{{},%%gv6  7Q-  7 7 7sTBA(BA.A*A.A,A.(B*A.,A..B4A7 5B<B)r8rprdr)rdrgrS)rzCallable[[SocketStream], Any]rzTaskGroup | Nonerdr) rHrIr-rJrrrnrrrrLrMr>rrsk D'D DD -- (, 7. 7% 7  7rMrc*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)r?r& SOCK_DGRAMrwrap_udp_socketrls r>rnzUDPSocket.from_socket#s6 F,=,=TR&(88>>>>rocHK|j|||ffd{S7w)z^ Alias for :meth:`~.UnreliableObjectSendStream.send` ((data, (host, port))). Nsend)rVdatahostports r>sendtozUDPSocket.sendto2s& YYtTl34444s " "N)r8rprdr)rrrstrrr%rdrrHrIr-rJrrrnrrLrMr>rrs   ? ?5rMrc"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 TriN)r?r&rrwrap_connected_udp_socketrls r>rnzConnectedUDPSocket.from_socketAs=    "  '(BB4HHHHroN)r8rprdrrqrLrMr>rr:s IIrMrc2eZdZdZe 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)r?r&rrvrwrap_unix_datagram_socketrls r>rnzUNIXDatagramSocket.from_socket^s: F,=,=v~~N&(BB4HHHHsAAA  AcDK|j||fd{S7w)zCAlias for :meth:`~.UnreliableObjectSendStream.send` ((data, path)).Nr)rVrpaths r>rzUNIXDatagramSocket.sendtopsYYd|,,,,s   N)r8rprdr)rrrrrdrrrLrMr>rrUs6 I'I II"-rMrc*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 TriN)r?r&rrvr#wrap_connected_unix_datagram_socketrls r>rnz'ConnectedUNIXDatagramSocket.from_socket|sA  ))6>>T '(LLTRRRRrxN)r8rprdrrqrLrMr>rrus1 S'S %SSrMr) r8rpr9zsocket.SocketKindr:zsocket.AddressFamilyr boolr!rrdrD)8 __future__rr(r&abcrcollections.abcrrr contextlibrior ipaddressr r r typingr rr_core._eventloopr_core._typedattrrrr_streamsrrr_tasksrrrrKtupler%rrrrrrr3r?rArOrgrtrrrrrrLrMr>rs" 99%. **0 CB,{: y:!#s(O +(3. i. !67 y7$)%*$5 5 :  )/(8(8B $ B#B B&B  B  BBJ&)'&)R# ,# LB:B.$ |$ N)7Xl+_)7X5&}55<I/6I6-12O-@S"8"?SrM