Ë
    +Œ:j³  ã                  ó*  — d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZ  e
d«      Z e
d«      Z ed¬	«       G d
„ de«      «       Z ed¬	«       G d„ dee   ee   «      «       Z ed¬	«       G d„ dee   ee   «      «       Zy)é    )Úannotations)Ú	dataclass)ÚAnyÚCallableÚGenericÚMappingÚSequenceÚTypeVaré   )ÚByteReceiveStreamÚByteSendStreamÚ
ByteStreamÚListenerÚObjectReceiveStreamÚObjectSendStreamÚObjectStreamÚ	TaskGroupÚT_ItemÚT_StreamF)Úeqc                  óZ   — e Zd ZU dZded<   ded<   ddd„Zdd„Zdd„Zdd	„Ze	dd
„«       Z
y)ÚStapledByteStreamaV  
    Combines two byte streams into a single, bidirectional byte stream.

    Extra attributes will be provided from both streams, with the receive stream providing the
    values in case of a conflict.

    :param ByteSendStream send_stream: the sending byte stream
    :param ByteReceiveStream receive_stream: the receiving byte stream
    r   Úsend_streamr   Úreceive_streamc              ƒ  óT   K  — | j                   j                  |«      ƒ d {  –—† S 7 Œ­w©N©r   Úreceive)ÚselfÚ	max_bytess     úW/var/www/html/tokenscope/api/venv/lib/python3.12/site-packages/anyio/streams/stapled.pyr   zStapledByteStream.receive$   s#   è ø€ Ø×(Ñ(×0Ñ0°Ó;×;Ð;Ð;ús   ‚(¡&¢(c              ƒ  óV   K  — | j                   j                  |«      ƒ d {  –—†  y 7 Œ­wr   ©r   Úsend©r   Úitems     r!   r$   zStapledByteStream.send'   ó    è ø€ Ø×Ñ×#Ñ# DÓ)×)Ò)úó   ‚)¡'¢)c              ƒ  óT   K  — | j                   j                  «       ƒ d {  –—†  y 7 Œ­wr   ©r   Úaclose©r   s    r!   Úsend_eofzStapledByteStream.send_eof*   ó   è ø€ Ø×Ñ×%Ñ%Ó'×'Ò'úó   ‚( &¡(c              ƒ  óœ   K  — | j                   j                  «       ƒ d {  –—†  | j                  j                  «       ƒ d {  –—†  y 7 Œ'7 Œ­wr   ©r   r+   r   r,   s    r!   r+   zStapledByteStream.aclose-   ó?   è ø€ Ø×Ñ×%Ñ%Ó'×'Ð'Ø×!Ñ!×(Ñ(Ó*×*Ñ*ð 	(øØ*úó!   ‚A A¡!AÁA
ÁAÁ
Ac                ó^   — i | j                   j                  ¥| j                  j                  ¥S r   ©r   Úextra_attributesr   r,   s    r!   r6   z"StapledByteStream.extra_attributes1   ó4   € ð
Ø×Ñ×/Ñ/ð
à×!Ñ!×2Ñ2ð
ð 	
ó    N)i   )r    ÚintÚreturnÚbytes)r&   r;   r:   ÚNone©r:   r<   ©r:   zMapping[Any, Callable[[], Any]]©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r$   r-   r+   Úpropertyr6   © r8   r!   r   r      s=   … ñð  ÓØ%Ó%ô<ó*ó(ó+ð ò
ó ñ
r8   r   c                  óX   — e Zd ZU dZded<   ded<   dd„Zdd„Zdd„Zdd	„Ze	dd
„«       Z
y)ÚStapledObjectStreamab  
    Combines two object streams into a single, bidirectional object stream.

    Extra attributes will be provided from both streams, with the receive stream providing the
    values in case of a conflict.

    :param ObjectSendStream send_stream: the sending object stream
    :param ObjectReceiveStream receive_stream: the receiving object stream
    zObjectSendStream[T_Item]r   zObjectReceiveStream[T_Item]r   c              ƒ  óR   K  — | j                   j                  «       ƒ d {  –—† S 7 Œ­wr   r   r,   s    r!   r   zStapledObjectStream.receiveH   s!   è ø€ Ø×(Ñ(×0Ñ0Ó2×2Ð2Ð2ús   ‚' %¡'c              ƒ  óV   K  — | j                   j                  |«      ƒ d {  –—†  y 7 Œ­wr   r#   r%   s     r!   r$   zStapledObjectStream.sendK   r'   r(   c              ƒ  óT   K  — | j                   j                  «       ƒ d {  –—†  y 7 Œ­wr   r*   r,   s    r!   r-   zStapledObjectStream.send_eofN   r.   r/   c              ƒ  óœ   K  — | j                   j                  «       ƒ d {  –—†  | j                  j                  «       ƒ d {  –—†  y 7 Œ'7 Œ­wr   r1   r,   s    r!   r+   zStapledObjectStream.acloseQ   r2   r3   c                ó^   — i | j                   j                  ¥| j                  j                  ¥S r   r5   r,   s    r!   r6   z$StapledObjectStream.extra_attributesU   r7   r8   N)r:   r   )r&   r   r:   r<   r=   r>   r?   rF   r8   r!   rH   rH   9   s=   … ñð *Ó)Ø/Ó/ó3ó*ó(ó+ð ò
ó ñ
r8   rH   c                  óT   — e Zd ZU dZded<   d	d„Z	 d
	 	 	 	 	 dd„Zd	d„Zedd„«       Z	y)ÚMultiListenera¿  
    Combines multiple listeners into one, serving connections from all of them at once.

    Any MultiListeners in the given collection of listeners will have their listeners moved into
    this one.

    Extra attributes are provided from each listener, with each successive listener overriding any
    conflicting attributes from the previous one.

    :param listeners: listeners to serve
    :type listeners: Sequence[Listener[T_Stream]]
    zSequence[Listener[T_Stream]]Ú	listenersc                óÐ   — g }| j                   D ]N  }t        |t        «      r+|j                  |j                   «       |j                   d d …= Œ>|j	                  |«       ŒP || _         y r   )rP   Ú
isinstancerO   ÚextendÚappend)r   rP   Úlisteners      r!   Ú__post_init__zMultiListener.__post_init__n   s]   € Ø.0ˆ	ØŸ™ò 	+ˆHÜ˜(¤MÔ2Ø× Ñ  ×!3Ñ!3Ô4Ø×&Ñ&¢qÑ)à× Ñ  Õ*ð	+ð #ˆ�r8   Nc              ƒ  óæ   K  — ddl m}  |«       4 ƒd {  –—† }| j                  D ]  }|j                  |j                  ||«       Œ! d d d «      ƒd {  –—†  y 7 ŒC7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Nr   )Úcreate_task_group)Ú rX   rP   Ú
start_soonÚserve)r   ÚhandlerÚ
task_grouprX   ÚtgrU   s         r!   r[   zMultiListener.servey   st   è ø€ õ 	)á$Ó&÷ 	Cð 	C¨"Ø ŸN™Nò C�Ø—‘˜hŸn™n¨g°zÕBðC÷	C÷ 	Cñ 	Cøð 	Cø÷ 	C÷ 	Cñ 	CüsD   ‚A1”A•A1˜/AÁA1ÁAÁA1ÁA1ÁA.Á"A%Á#A.Á*A1c              ƒ  ób   K  — | j                   D ]  }|j                  «       ƒ d {  –—†  Œ y 7 Œ­wr   )rP   r+   )r   rU   s     r!   r+   zMultiListener.aclose‚   s,   è ø€ ØŸ™ò 	$ˆHØ—/‘/Ó#×#Ñ#ñ	$Ø#ús   ‚#/¥-¦/c                ób   — i }| j                   D ]  }|j                  |j                  «       Œ |S r   )rP   Úupdater6   )r   Ú
attributesrU   s      r!   r6   zMultiListener.extra_attributes†   s6   € àˆ
ØŸ™ò 	9ˆHØ×Ñ˜h×7Ñ7Õ8ð	9ð Ðr8   r=   r   )r\   zCallable[[T_Stream], Any]r]   zTaskGroup | Noner:   r<   r>   )
r@   rA   rB   rC   rD   rV   r[   r+   rE   r6   rF   r8   r!   rO   rO   ]   sU   … ñð ,Ó+ó	#ð RVðCØ0ðCØ>NðCà	óCó$ð òó ñr8   rO   N)Ú
__future__r   Údataclassesr   Útypingr   r   r   r   r	   r
   Úabcr   r   r   r   r   r   r   r   r   r   r   rH   rO   rF   r8   r!   ú<module>rg      s¯   ðÝ "å !ß E× E÷	÷ 	ó 	ñ 
�Ó	€Ù�:Ó€ñ ˆeÔô 
˜
ó  
ó ð 
ñF ˆeÔô 
˜' &™/¨<¸Ñ+?ó  
ó ð 
ñF ˆeÔô.�G˜HÑ% x°Ñ'9ó .ó ñ.r8   