ó
    úÞ jj3  ã                  ó–  • % S SK Jr  S SKrS SKrS SKJr  S SKJrJrJ	r	  S SK
Jr  S SKJr  S SKJrJr  S SKJr  S S	KJrJrJrJr  S
SKJr  S
SKJrJrJr  SSKJrJrJ r   \(       a  SSK!J"r"  \#\-  \-  r$S\%S'   \&\#\'4   r(S\%S'   \(\#-  r)S\%S'   \&\*\(4   r+S\%S'   \&\*\#4   r,S\%S'   \" S5      r-\R\                  4SSS.           S,S jjjr/ " S S\5      r0 " S S\5      r1 " S S\\15      r2 " S  S!\25      r3 " S" S#\\2   \15      r4 " S$ S%\ \+   \15      r5 " S& S'\ \*   \15      r6 " S( S)\ \,   \15      r7 " S* S+\ \*   \15      r8g)-é    )ÚannotationsN)Úabstractmethod)ÚCallableÚ
CollectionÚMapping)ÚAsyncExitStack)ÚIOBase)ÚIPv4AddressÚIPv6Address)ÚAddressFamily)ÚTYPE_CHECKINGÚAnyÚ	TypeAliasÚTypeVaré   )Úget_async_backend)ÚTypedAttributeProviderÚTypedAttributeSetÚtyped_attributeé   )Ú
ByteStreamÚListenerÚUnreliableObjectStream)Ú	TaskGroupr   ÚIPAddressTypeÚIPSockAddrTypeÚSockAddrTypeÚUDPPacketTypeÚUNIXDatagramPacketTypeÚT_RetvalF)Úrequire_connectedÚrequire_boundc               óÈ  • [        U [        5      (       a   [        R                  " U S9nOD[        U [        R                  5      (       a  U nO"[        S[        U 5      R                   S35      e U(       a   UR                  5         U(       af   UR                  [        R                  [        R                  4;   a  UR                  5       S   nOUR                  5       n U(       d  [        S5      eU[        R                  :w  a?  UR                  U:w  a/  [        SUR                    S	UR                  R                    35      eUR                  U:w  a/  [        S
UR                    S	UR                  R                    35      e UR'                  S5        U$ ! [         aV  nUR                  [        R
                  :X  a  [        S5      UeU(       a  [        S5      UeU(       a  [        S5      Uee S nAff = f! [         a  n[        S5      UeS nAff = f! [         a    S n GNHf = f! ["         a'    [        U [        5      (       a  UR%                  5         e f = f)N)Úfilenoz.the file descriptor does not refer to a socketzthe socket must be connectedz+the socket must be bound to a local addresszexpected an int or socket, got z insteadr   z"address family mismatch: expected z, got zsocket 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)Ú
sock_or_fdÚ	sock_typeÚaddr_familyr!   r"   ÚsockÚexcÚ
bound_addrs           ÚL/var/www/html/gaurav/venv/lib/python3.13/site-packages/anyio/abc/_sockets.pyÚ_validate_socketr@       s+  € ô �*œc×"Ñ"ð	Ü—=’=¨
Ñ3‰Dô 
�J¤§¡×	.Ñ	.Ø‰äØ-¬d°:Ó.>×.KÑ.KÐ-LÈHÐUó
ð 	
ð"ÞðJØ× Ñ Ô"ö ð"Ø—;‘;¤6§>¡>´6·?±?Ð"CÓCØ!%×!1Ñ!1Ó!3°AÑ!6‘Jà!%×!1Ñ!1Ó!3‘Jö Ü Ð!NÓOÐOàœ&×*Ñ*Ó*¨t¯{©{¸kÓ/IÜØ4°[×5EÑ5EÐ4FÀfØ—;‘;×#Ñ#Ð$ð&óð ð
 �9‰9˜	Ó!ÜØ1°)·.±.Ð1AÀÈÏ	É	ÏÉÐGWÐXóð ð "ð 	×Ñ�UÔØ€Køôo ó 
	Ø�y‰yœEŸN™NÓ*Ü ØDóàðö #Ü Ð!?Ó@ÀcÐIÞÜ Ð!NÓOÐUXÐXàûð
	ûô, ó JÜ Ð!?Ó@ÀcÐIûðJûô ó "Ø!“
ð"ûô  ó ä�j¤#×&Ñ&Ø�K‰KŒMàðúsz   —F Á1H0 Á9G? Â	H0 ÂAH ÃH0 ÃH Ã#B%H0 Æ
G<Æ&AG7Ç7G<Ç?
HÈ	HÈHÈH0 ÈH-È)H0 È,H-È-H0 È01I!c                  óª   • \ rS rSr% Sr\" 5       rS\S'   \" 5       rS\S'   \" 5       r	S\S'   \" 5       r
S	\S
'   \" 5       rS\S'   \" 5       rS\S'   Srg)ÚSocketAttributeée   a±  
.. 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   r0   r   Úlocal_addressr&   Ú
local_portúsocket.socketÚ
raw_socketÚremote_addressÚremote_port© N)Ú__name__Ú
__module__r.   Ú__firstlineno__Ú__doc__r   r0   Ú__annotations__rD   rE   rG   rH   rI   Ú__static_attributes__rJ   ó    r?   rB   rB   e   sX   ‡ ññ@ ,Ó-€FˆMÓ-Ù"1Ó"3€M�<Ó3Ù%Ó'€J�Ó'Ù /Ó 1€J�Ó1Ù#2Ó#4€N�LÓ4Ù&Ó(€K�Ö(rQ   rB   c                  óF   • \ rS rSr\SS j5       r\\SS j5       5       rSrg)Ú_SocketProvideréŽ   c                ó  ^ ^^^• SSK Jm  [        R                  U 4S j[        R                  UU 4S j[        R
                  U 4S j0n T" T R                  R                  5       5      mTb  U4S jU[        R                  '   T R                  R                  [        R                  [        R                  4;   a6  U 4S jU[        R                  '   Tb  TS   mU4S	 jU[        R                  '   U$ ! [         a    S m N˜f = f)
Nr   )Úconvert_ipv6_sockaddrc                 ó0   >• T R                   R                  $ ©N)Ú_raw_socketr0   ©Úselfs   €r?   Ú<lambda>Ú2_SocketProvider.extra_attributes.<locals>.<lambda>”   s   ø€ ¨D×,<Ñ,<×,CÒ,CrQ   c                 óD   >• T " TR                   R                  5       5      $ rX   ©rY   r3   )Úconvertr[   s   €€r?   r\   r]   •   s   ø€ ±7Ø× Ñ ×,Ñ,Ó.ô4rQ   c                 ó   >• T R                   $ rX   )rY   rZ   s   €r?   r\   r]   ˜   s   ø€ °×0@Ò0@rQ   c                 ó   >• T $ rX   rJ   )Úpeernames   €r?   r\   r]   ¡   s   ø€ ÁrQ   c                 ó>   >• T R                   R                  5       S   $ )Nr   r_   rZ   s   €r?   r\   r]   ¥   s   ø€ Ø× Ñ ×,Ñ,Ó.¨qÒ1rQ   r   c                 ó   >• T $ rX   rJ   )rI   s   €r?   r\   r]   ª   s   ø€ Á+rQ   )Ú_core._socketsrV   rB   r0   rD   rG   rY   r/   r(   rH   r   r1   r2   rE   rI   )r[   Ú
attributesr`   rc   rI   s   ` @@@r?   Úextra_attributesÚ _SocketProvider.extra_attributes�   sã   û€ åEô ×"Ñ"Ô$CÜ×)Ñ)õ ,ô ×&Ñ&Ô(@ð4
ˆ
ð	Ù/6°t×7GÑ7G×7SÑ7SÓ7UÓ/VˆHð
 ÑÜ9IˆJ”×5Ñ5Ñ6ð ×Ñ×"Ñ"¤}×'<Ñ'<¼m×>TÑ>TÐ&UÓUô6ˆJ”×1Ñ1Ñ2ð Ñ#Ø& q™k�Ü:M�
œ?×6Ñ6Ñ7àÐøô! ó 	ØŠHð	ús   Á C5 Ã5DÄDc                ó   • g rX   rJ   rZ   s    r?   rY   Ú_SocketProvider._raw_socket®   s   € ð 	rQ   rJ   N)ÚreturnzMapping[Any, Callable[[], Any]])rl   rF   )	rK   rL   r.   rM   Úpropertyrh   r   rY   rP   rJ   rQ   r?   rS   rS   Ž   s0   † Øóó ðð< Øóó ó órQ   rS   c                  ó,   • \ rS rSrSr\SS j5       rSrg)ÚSocketStreamé´   zi
Transports bytes over a socket.

Supports all relevant extra attributes from :class:`~SocketAttribute`.
c              ƒ  ó‚   #   • [        U[        R                  SS9n[        5       R	                  U5      I Sh  v•N $  N7f)a  
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)r@   r'   ÚSOCK_STREAMr   Úwrap_stream_socket©Úclsr9   r<   s      r?   Úfrom_socketÚSocketStream.from_socket»   s6   é € ô   
¬F×,>Ñ,>ÐRVÑWˆÜ&Ó(×;Ñ;¸DÓA×AÐAÑAùó   ‚6?¸=¹?rJ   N)r9   úsocket.socket | intrl   ro   ©rK   rL   r.   rM   rN   Úclassmethodrw   rP   rJ   rQ   r?   ro   ro   ´   s   † ñð óBó óBrQ   ro   c                  óP   • \ rS rSr\SS j5       r\SS j5       r\S	S j5       rSr	g)
ÚUNIXSocketStreaméË   c              ƒ  ó    #   • [        U[        R                  [        R                  SS9n[	        5       R                  U5      I Sh  v•N $  N7f)a"  
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

Trr   N)r@   r'   rs   ÚAF_UNIXr   Úwrap_unix_stream_socketru   s      r?   rw   ÚUNIXSocketStream.from_socketÌ   s@   é € ô  Øœ×*Ñ*¬F¯N©NÈdñ
ˆô 'Ó(×@Ñ@ÀÓF×FÐFÑFùó   ‚AAÁAÁAc              ƒ  ó   #   • g7f)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)
NrJ   )r[   ÚmessageÚfdss      r?   Úsend_fdsÚUNIXSocketStream.send_fdsÝ   ó   é � ùó   ‚c              ƒ  ó   #   • g7f)zö
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)
NrJ   )r[   ÚmsglenÚmaxfdss      r?   Úreceive_fdsÚUNIXSocketStream.receive_fdsç   rŠ   r‹   rJ   N)r9   rz   rl   r~   )r†   Úbytesr‡   zCollection[int | IOBase]rl   ÚNone)r�   r&   rŽ   r&   rl   ztuple[bytes, list[int]])
rK   rL   r.   rM   r|   rw   r   rˆ   r�   rP   rJ   rQ   r?   r~   r~   Ë   s>   † ØóGó ðGð  óó ðð óó órQ   r~   c                  ób   • \ rS rSrSr\    SS j5       r\S	S j5       r S
     SS jjr	Sr
g)ÚSocketListeneréò   zq
Listens to incoming socket connections.

Supports all relevant extra attributes from :class:`~SocketAttribute`.
c              ƒ  ó‚   #   • [        U[        R                  SS9n[        5       R	                  U5      I Sh  v•N $  N7f)zç
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)r@   r'   rs   r   Úwrap_listener_socketru   s      r?   rw   ÚSocketListener.from_socketù   s5   é € ô   
¬F×,>Ñ,>ÈdÑSˆÜ&Ó(×=Ñ=¸dÓC×CÐCÑCùry   c              ƒ  ó   #   • g7f)zAccept an incoming connection.NrJ   rZ   s    r?   ÚacceptÚSocketListener.accept
  rŠ   r‹   Nc              ƒ  ó  #   • SSK Jn  [        5        IS h  v•N nUc  UR                  U" 5       5      I S h  v•N n U R	                  5       I S h  v•N nUR                  X5        M+   NQ N2 N! , IS h  v•N  (       d  f       g = f7f)Nr   )Úcreate_task_group)Ú rž   r   Úenter_async_contextr›   Ú
start_soon)r[   ÚhandlerÚ
task_grouprž   ÚstackÚstreams         r?   ÚserveÚSocketListener.serve  sn   é € õ
 	)ä!×#Ô# uØÑ!Ø#(×#<Ñ#<Ñ=NÓ=PÓ#Q×Q�
àØ#Ÿ{™{›}×,�Ø×%Ñ% gÔ6ñ ñ	 $áQñ -÷ $×#Ö#üsT   ‚B	—A)˜B	›A/¸A+¹A/ÁA-ÁA/Á)B	Á+A/Á-A/Á/BÁ5A8Á6BÂB	rJ   )r9   rz   rl   r”   )rl   ro   rX   )r¢   zCallable[[SocketStream], Any]r£   zTaskGroup | Nonerl   r’   )rK   rL   r.   rM   rN   r|   rw   r   r›   r¦   rP   rJ   rQ   r?   r”   r”   ò   sp   † ñð ðDà'ðDð 
óDó ðDð  ó-ó ð-ð (,ð7à.ð7ð %ð7ð 
÷	7ð 7rQ   r”   c                  ó6   • \ rS rSrSr\SS j5       rSS jrSrg)	Ú	UDPSocketi  zo
Represents an unconnected UDP socket.

Supports all relevant extra attributes from :class:`~SocketAttribute`.
c              ƒ  ó‚   #   • [        U[        R                  SS9n[        5       R	                  U5      I Sh  v•N $  N7f)a  
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)r@   r'   Ú
SOCK_DGRAMr   Úwrap_udp_socketru   s      r?   rw   ÚUDPSocket.from_socket%  s5   é € ô   
¬F×,=Ñ,=ÈTÑRˆÜ&Ó(×8Ñ8¸Ó>×>Ð>Ñ>ùry   c              ƒ  óF   #   • U R                  XU445      I Sh  v•N $  N7f)zN
Alias for :meth:`~.UnreliableObjectSendStream.send` ((data, (host, port))).

N©Úsend)r[   ÚdataÚhostÚports       r?   ÚsendtoÚUDPSocket.sendto4  s#   é € ð
 —Y‘Y ¨T lÐ3Ó4×4Ð4Ñ4ùs   ‚!š›!rJ   N)r9   rz   rl   r©   )r±   r‘   r²   Ústrr³   r&   rl   r’   ©	rK   rL   r.   rM   rN   r|   rw   r´   rP   rJ   rQ   r?   r©   r©     s    † ñð ó?ó ð?÷5rQ   r©   c                  ó,   • \ rS rSrSr\SS j5       rSrg)ÚConnectedUDPSocketi<  zm
Represents an connected UDP socket.

Supports all relevant extra attributes from :class:`~SocketAttribute`.
c              ƒ  ó‚   #   • [        U[        R                  SS9n[        5       R	                  U5      I Sh  v•N $  N7f)a&  
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

Trr   N)r@   r'   r«   r   Úwrap_connected_udp_socketru   s      r?   rw   ÚConnectedUDPSocket.from_socketC  s<   é € ô  ØÜ×ÑØ"ñ
ˆô
 'Ó(×BÑBÀ4ÓH×HÐHÑHùry   rJ   N)r9   rz   rl   r¹   r{   rJ   rQ   r?   r¹   r¹   <  s   † ñð óIó óIrQ   r¹   c                  ó>   • \ rS rSrSr\    SS j5       rSS jrSrg)	ÚUNIXDatagramSocketiW  zy
Represents an unconnected Unix datagram socket.

Supports all relevant extra attributes from :class:`~SocketAttribute`.
c              ƒ  ó¢   #   • [        U[        R                  [        R                  5      n[	        5       R                  U5      I Sh  v•N $  N7f)z÷
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'   r«   r�   r   Úwrap_unix_datagram_socketru   s      r?   rw   ÚUNIXDatagramSocket.from_socket`  s9   é € ô   
¬F×,=Ñ,=¼v¿~¹~ÓNˆÜ&Ó(×BÑBÀ4ÓH×HÐHÑHùs   ‚AAÁAÁ	Ac              ƒ  óB   #   • U R                  X45      I Sh  v•N $  N7f)zCAlias for :meth:`~.UnreliableObjectSendStream.send` ((data, path)).Nr¯   )r[   r±   Úpaths      r?   r´   ÚUNIXDatagramSocket.sendtor  s   é € à—Y‘Y ˜|Ó,×,Ð,Ñ,ùs   ‚˜™rJ   N)r9   rz   rl   r¾   )r±   r‘   rÃ   r¶   rl   r’   r·   rJ   rQ   r?   r¾   r¾   W  s6   † ñð ðIà'ðIð 
óIó ðI÷"-rQ   r¾   c                  ó4   • \ rS rSrSr\    SS j5       rSrg)ÚConnectedUNIXDatagramSocketiw  zv
Represents a connected Unix datagram socket.

Supports all relevant extra attributes from :class:`~SocketAttribute`.
c              ƒ  ó    #   • [        U[        R                  [        R                  SS9n[	        5       R                  U5      I Sh  v•N $  N7f)a:  
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

Trr   N)r@   r'   r«   r�   r   Ú#wrap_connected_unix_datagram_socketru   s      r?   rw   Ú'ConnectedUNIXDatagramSocket.from_socket~  s@   é € ô   Øœ×)Ñ)¬6¯>©>ÈTñ
ˆô 'Ó(×LÑLÈTÓR×RÐRÑRùr„   rJ   N)r9   rz   rl   rÆ   r{   rJ   rQ   r?   rÆ   rÆ   w  s1   † ñð ðSà'ðSð 
%óSó óSrQ   rÆ   )r9   rz   r:   zsocket.SocketKindr;   zsocket.AddressFamilyr!   Úboolr"   rÊ   rl   rF   )9Ú
__future__r   r)   r'   Úabcr   Úcollections.abcr   r   r   Ú
contextlibr   Úior	   Ú	ipaddressr
   r   r   Útypingr   r   r   r   Ú_core._eventloopr   Ú_core._typedattrr   r   r   Ú_streamsr   r   r   Ú_tasksr   r¶   r   rO   Útupler&   r   r   r‘   r   r   r    r4   r@   rB   rS   ro   r~   r”   r©   r¹   r¾   rÆ   rJ   rQ   r?   Ú<module>r×      s­  ðÞ "ã Û Ý ß 9Ñ 9Ý %Ý ß .Ý  ß 9Ó 9å 0÷ñ ÷
 CÑ BæÝ!à Ñ,¨{Ñ:€ˆyÓ :Ø! # s (™O€�	Ó +Ø(¨3Ñ.€ˆiÓ .Ø  ¨Ð!6Ñ7€ˆyÓ 7Ø$)¨%°¨*Ñ$5Ð ˜	Ó 5Ù�:Ó€ð )/×(8Ñ(8ðBð
 $ØñBØ#ðBà ðBð &ðBð
 ðBð ðBð öBôJ&)Ð'ô &)ôR#Ð,ô #ôLB�:˜ô Bô.$�|ô $ôN)7�X˜lÑ+¨_ô )7ôX5Ð& }Ñ5°ô 5ô<IÐ/°Ñ6¸ô Iô6-ØÐ1Ñ2°Oô-ô@SÐ"8¸Ñ"?Àõ SrQ   