
    "h                     `    S SK JrJr  SSKJr  S\S\\   4S jr " S S5      r " S	 S
5      rg)    )ListOptional   )ServerSentEventtextreturnc                 b   / nSnSnU[        U 5      :  aw  U[        U 5      S-
  :  a)  XUS-    S:X  a  UR                  XU 5        US-   nUS-  nO+X   S;   a  UR                  XU 5        US-   nUS-  nOUS-  nU[        U 5      :  a  Mw  U[        U 5      :  a  UR                  XS 5        U$ )z#Split text on \r\n, \r, or \n only.r   r      z
N)lenappend)r   linesstartis       C/root/34ku/venv/lib/python3.13/site-packages/httpx_sse/_decoders.py_splitlines_sser      s    EE	A
c$i-s4y1}!a%F!:LLA'EEFAWLLA'EEFAFA c$i- s4yT&\"L    c                   N    \ rS rSrSrS
S jrS\S\\   4S jrS\\   4S jr	S	r
g)SSELineDecoder!   a  
    Handles incrementally reading lines from text.

    Mostly a copy of httpx._decoders.LineDecoder, but as per SSE spec, only 
, ,
    and 
 are treated as newlines, which differs from the behavior of splitlines()
    used by httpx._decoders.LineDecoder.
    r   Nc                      / U l         SU l        g )NFbuffertrailing_crselfs    r   __init__SSELineDecoder.__init__*   s    !#!&r   r   c                    U R                   (       a  SU-   nSU l         UR                  S5      (       a  SU l         US S nU(       d  / $ US   S;   n[        U5      n[        U5      S:X  a'  U(       d   U R                  R                  US   5        / $ U R                  (       a/  SR                  U R                  5      US   -   /USS  -   n/ U l        U(       d  UR                  5       /U l        U$ )	NFTz
r   r    )r   endswithr   r   r   r   joinpop)r   r   trailing_newliner   s       r   decodeSSELineDecoder.decode.   s    $;D$D==#D9D I8v-%u:?#3KKuQx(I;; WWT[[)E!H45ab	AEDK !99;-DKr   c                     U R                   (       d  U R                  (       d  / $ SR                  U R                   5      /n/ U l         SU l        U$ )Nr!   F)r   r   r#   )r   r   s     r   flushSSELineDecoder.flushQ   s?    {{4#3#3I%& r   r   r   N)__name__
__module____qualname____firstlineno____doc__r   strlistr&   r)   __static_attributes__ r   r   r   r   !   s4    '!3 !49 !FtCy r   r   c                   6    \ rS rSrSS jrS\S\\   4S jrSr	g)	
SSEDecoder[   r   Nc                 <    SU l         / U l        SU l        S U l        g )Nr!   )_event_data_last_event_id_retryr   s    r   r   SSEDecoder.__init__\   s     "
 %)r   linec                    U(       d  U R                   (       d0  U R                  (       d  U R                  (       d  U R                  c  g [	        U R                   SR                  U R                  5      U R                  U R                  S9nSU l         / U l        S U l        U$ UR                  S5      (       a  g UR                  S5      u  p4nUR                  S5      (       a  USS  nUS:X  a  XPl         g US:X  a  U R                  R                  U5        g US	:X  a  S
U;   a   g XPl         g US:X  a   [        U5      U l        g  g ! [        [        4 a     g f = f)N
)eventdataidretryr!   : r   rA   rB   rC    rD   )r9   r:   r;   r<   r   r#   
startswith	partitionr   int	TypeError
ValueError)r   r>   sse	fieldname_values         r   r&   SSEDecoder.decodeb   sW    KK

++KK'!kkYYtzz*&&kk	C DKDJDKJ??3"nnS1	eC  !"IEK   & JJe$  $u}  ',#  '!!%j   z*  s   5E EE)r:   r9   r;   r<   r+   )
r,   r-   r.   r/   r   r1   r   r   r&   r3   r4   r   r   r6   r6   [   s    *33 38O#< 3r   r6   N)	typingr   r   _modelsr   r1   r   r   r6   r4   r   r   <module>rT      s7    ! $# $s) 67 7t: :r   