ó
    ûÞ jÝ  ã                  óT   • S SK Jr  S SKrS SKrS SKJr  S SKrSSKJ	r	   " S S5      r
g)é    )ÚannotationsN)Údequeé   )ÚWebSocketQueueFullErrorc                  óv   • \ rS rSrSrSSS jjrSS jrSS jrSS jrSS jr	SS jr
SS	 jrSS
 jrSS jrSrg)Ú	SendQueueé   zØBounded byte-size queue for outgoing WebSocket messages.

Messages are stored as pre-serialized strings. The queue enforces a
maximum byte budget so that unbounded buffering cannot occur during
reconnection windows.
c                ón   • / U l         SU l        Xl        [        R                  " 5       U l        S U l        g ©Nr   )Ú_queueÚ_bytesÚ
_max_bytesÚ	threadingÚLockÚ_lockÚ_flush_done)ÚselfÚ	max_bytess     ÚL/var/www/html/gaurav/venv/lib/python3.13/site-packages/openai/_send_queue.pyÚ__init__ÚSendQueue.__init__   s+   € Ø-/ˆŒØˆŒØ#ŒÜ—^’^Ó%ˆŒ
Ø37ˆÕó    c                ó6  • [        UR                  S5      5      nU R                     U R                  U-   U R                  :”  a  [        S5      eU R                  R                  X45        U =R                  U-  sl        SSS5        g! , (       d  f       g= f)zvAppend *data* to the queue.

Raises :class:`WebSocketQueueFullError` if the message would
exceed the byte-size limit.
zutf-8z%send queue is full, message discardedN)ÚlenÚencoder   r   r   r   r   Úappend)r   ÚdataÚbyte_lengths      r   ÚenqueueÚSendQueue.enqueue   sl   € ô ˜$Ÿ+™+ gÓ.Ó/ˆØ�Z‹ZØ�{‰{˜[Ñ(¨4¯?©?Ó:Ü-Ð.UÓVÐVØ�K‰K×Ñ Ð2Ô3Ø�KŠK˜;Ñ&�K÷	 �ZŽZús   §AB
Â

Bc                ó  • [        U R                  5       =n[        R                  5      (       aA  UR	                  5         [        U R                  5       =n[        R                  5      (       a  MA   U(       aR  US   u  p4U" U5        U R
                     UR                  5         U =R                  U-  sl        SSS5        U(       a  MR  U R                  U5        g! , (       d  f       N)= f! U R                  U5        f = f)z“Send every queued message via *send*.

If *send* raises, the failing message and all subsequent messages
are re-queued and the error is re-raised.
r   N)	Ú
isinstanceÚ_begin_flushr   ÚEventÚwaitr   Úpopleftr   Ú
_end_flush©r   ÚsendÚpendingr   r   s        r   Ú
flush_syncÚSendQueue.flush_sync(   s¸   € ô  D×$5Ñ$5Ó$7Ð7˜¼¿¹×IÑIØ�L‰LŒNô  D×$5Ñ$5Ó$7Ð7˜¼¿¹×IÓIð	%ÞØ$+¨A¡JÑ!�Ù�T”
Ø—Z“ZØ—O‘OÔ%Ø—K’K ;Ñ.•K÷  ÷ �'ð �O‰O˜GÕ$÷	  •Zûð �O‰O˜GÕ$ús$   Á2"C. Â&CÂ:C. Ã
C+Ã'C. Ã.Dc              ƒ  óh  #   • [        U R                  5       =n[        R                  5      (       aa  [        R
                  R                  UR                  SS9I Sh  v•N   [        U R                  5       =n[        R                  5      (       a  Ma   U(       aZ  US   u  p4U" U5      I Sh  v•N   U R                     UR                  5         U =R                  U-  sl
        SSS5        U(       a  MZ  U R                  U5        g N© N[! , (       d  f       N-= f! U R                  U5        f = f7f)z$Async variant of :meth:`flush_sync`.T)Úabandon_on_cancelNr   )r"   r#   r   r$   ÚanyioÚ	to_threadÚrun_syncr%   r   r&   r   r'   r(   s        r   Úflush_asyncÚSendQueue.flush_async;   sá   é € ä D×$5Ñ$5Ó$7Ð7˜¼¿¹×IÑIô —/‘/×*Ñ*¨7¯<©<È4Ð*ÐP×PÐPô  D×$5Ñ$5Ó$7Ð7˜¼¿¹×IÓIð
	%ÞØ$+¨A¡JÑ!�Ù˜4“j× Ð Ø—Z“ZØ—O‘OÔ%Ø—K’K ;Ñ.•K÷  ÷ �'ð �O‰O˜GÕ$ñ Qñ
 !ß•Zûð �O‰O˜GÕ$üsT   ‚AD2ÁDÁ3D2ÂD Â-D	Â.D Â>&DÃ$D Ã5D2Ä	D Ä
DÄD ÄD/Ä/D2c                ó*  • U R                      U R                  b  U R                  sS S S 5        $ [        U R                  5      nU R                  R	                  5         [
        R                  " 5       U l        UsS S S 5        $ ! , (       d  f       g = f©N)r   r   r   r   Úclearr   r$   ©r   r*   s     r   r#   ÚSendQueue._begin_flushL   sa   € Ø�Z‹ZØ×ÑÑ+Ø×'Ñ'÷ ‰Zô ˜DŸK™KÓ(ˆGØ�K‰K×ÑÔÜ(ŸšÓ0ˆDÔà÷ �Z�Zús   �B°A
BÂ
Bc                óê   • U R                      [        U5      U R                  -   U l        U R                  c   eU R                  R	                  5         S U l        S S S 5        g ! , (       d  f       g = fr5   )r   Úlistr   r   Úsetr7   s     r   r'   ÚSendQueue._end_flushV   sS   € Ø�Z‹ZÜ˜w›-¨$¯+©+Ñ5ˆDŒKØ×#Ñ#Ñ/Ð/Ð/Ø×Ñ× Ñ Ô"Ø#ˆDÔ÷	 �ZŽZús   �AA$Á$
A2c                ó0  • U R                      U R                   VVs/ sH  u  pUPM	     nnnU =R                  [        S U R                   5       5      -  sl        U R                  R	                  5         UsSSS5        $ s  snnf ! , (       d  f       g= f)z&Remove and return all queued messages.c              3  ó(   #   • U H	  u  pUv •  M     g 7fr5   © )Ú.0Ú_r   s      r   Ú	<genexpr>Ú"SendQueue.drain.<locals>.<genexpr>a   s   é € ÐMÁ©~¨q�{Âùs   ‚N)r   r   r   Úsumr6   )r   r   rA   Úitemss       r   ÚdrainÚSendQueue.drain]   se   € à�Z‹ZØ)-¯ªÔ5©™g˜d“T©ˆEÑ5Ø�KŠKœ3ÑMÀÇÂÓMÓMÑM�KØ�K‰K×ÑÔØ÷	 ‰ZùÛ5÷ �Zús   �B�BªABÂBÂ
Bc                óz   • U R                      [        U R                  5      sS S S 5        $ ! , (       d  f       g = fr5   ©r   r   r   ©r   s    r   Ú__len__ÚSendQueue.__len__e   s   € Ø�Z‹ZÜ�t—{‘{Ó#÷ �Z�Zús   �,¬
:c                ó€   • U R                      [        U R                  5      S:„  sS S S 5        $ ! , (       d  f       g = fr   rI   rJ   s    r   Ú__bool__ÚSendQueue.__bool__i   s$   € Ø�Z‹ZÜ�t—{‘{Ó# aÑ'÷ �Z�Zús   �/¯
=)r   r   r   r   r   N)i   )r   ÚintÚreturnÚNone)r   ÚstrrQ   rR   )r)   ztyping.Callable[[str], object]rQ   rR   )r)   z0typing.Callable[[str], typing.Awaitable[object]]rQ   rR   )rQ   z(deque[tuple[str, int]] | threading.Event)r*   zdeque[tuple[str, int]]rQ   rR   )rQ   z	list[str])rQ   rP   )rQ   Úbool)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r+   r2   r#   r'   rF   rK   rN   Ú__static_attributes__r?   r   r   r   r      s4   † ñö8ô'ô%ô&%ô"ô$ôô$÷(r   r   )Ú
__future__r   Útypingr   Úcollectionsr   Úanyio.to_threadr/   Ú_exceptionsr   r   r?   r   r   Ú<module>r`      s#   ðÝ "ã Û Ý ã å 0÷_(ò _(r   