
    =Kie                        S r SSKJr  SSKrSSKJrJr  SSKJr  SSK	r	SSK
r
SSKJr  \\-  \-  r " S S5      r " S	 S
5      rSS jrSS jrg)zCAdapted from httpx_sse to split lines on 
, , 
 per the SSE spec.    )annotationsN)AsyncIteratorIterator)cast)
StreamPartc                  6    \ rS rSrSrSS jrS	S jrS
S jrSrg)BytesLineDecoder   z
Handles incrementally reading lines from text.

Has the same behaviour as the stdllib bytes splitlines,
but handling the input iteratively.
c                0    [        5       U l        SU l        g NF)	bytearraybuffertrailing_crselfs    S/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/langgraph_sdk/sse.py__init__BytesLineDecoder.__init__   s    k!&    c                   Sn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   U;   n[        [        [           UR                  5       5      n[        U5      S:X  a'  U(       d   U R                  R                  US   5        / $ U R                  (       aT  U R                  R                  US   5        [        [        [           U R                  /USS  Q5      n[        5       U l        U(       d)  U R                  R                  UR                  5       5        U$ )Ns   
   FT   r   )r   endswithr   list	BytesLike
splitlineslenr   extendr   pop)r   textNEWLINE_CHARStrailing_newlineliness        r   decodeBytesLineDecoder.decode   s
    4<D$D==#D9D I8}4T)_doo&78u:?#3KKuQx(I;; KKuQx(i4;;*Cqr*CDE#+DK KKuyy{+r   c                    U R                   (       d  U R                  (       d  / $ U R                   /n[        5       U l         SU l        U$ r   )r   r   r   )r   r$   s     r   flushBytesLineDecoder.flushD   s7    {{4#3#3Ik r   )r   r   NreturnNone)r!   bytesr+   list[BytesLike])r+   r.   )	__name__
__module____qualname____firstlineno____doc__r   r%   r(   __static_attributes__ r   r   r	   r	      s    '%Nr   r	   c                  <    \ rS rSrSS jr\SS j5       rS	S jrSrg)

SSEDecoderN   c                L    SU l         [        5       U l        SU l        S U l        g )N )_eventr   _data_last_event_id_retryr   s    r   r   SSEDecoder.__init__O   s!    [
 "&r   c                ,    U R                   =(       d    S$ )z/Return the last event identifier that was seen.N)r=   r   s    r   last_event_idSSEDecoder.last_event_idU   s     ""*d*r   c                f   U(       d  U R                   (       d0  U R                  (       d  U R                  (       d  U R                  c  g [	        U R                   U R                  (       a   [
        R                  " U R                  5      OS U R                  S9nSU l         [        5       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  UR                  5       U l         g US:X  a  U R                  R                  U5        g US:X  a  S	U;   a   g UR                  5       U l         g US
:X  a9  [        R                  " [        [         5         [#        U5      U l        S S S 5        g  g ! , (       d  f       g = f)N)eventdataidr:      :    r   s   events   datas   id    s   retry)r;   r<   r=   r>   r   orjsonloadsrA   r   
startswith	partitionr%   r   
contextlibsuppress	TypeError
ValueErrorint)r   linesse	fieldname_values         r   r%   SSEDecoder.decode[   sj    KK

++KK'kk15V\\$**-%%C DK"DJDKJ??4  "nnT2	eD!!!"IE ,,.DK  '!JJe$  %~  ',lln#  ("$$Y
;!%j <
   <;
 s   F""
F0)r<   r;   r=   r>   Nr*   )r+   z
str | None)rS   r-   r+   zStreamPart | None)	r/   r0   r1   r2   r   propertyrA   r%   r4   r5   r   r   r7   r7   N   s     ' + +
0r   r7   c                  #    [        5       nU R                  5         S h  vN nUR                  U5       H  nU7v   M
     M(   N#
 UR                  5        H  nU7v   M
     g 7fN)r	   aiter_bytesr%   r(   responsedecoderchunkrS   s       r   aiter_lines_rawra      sW      G++- eNN5)DJ *- 
  s%   A%AAA A%AA%c              #     #    [        5       nU R                  5        H  nUR                  U5       H  nUv   M	     M!     UR                  5        H  nUv   M	     g 7fr[   )r	   
iter_bytesr%   r(   r]   s       r   iter_lines_rawrd      sO      G$$&NN5)DJ * ' 
  s   AA)r^   httpx.Responser+   zAsyncIterator[BytesLike])r^   re   r+   zIterator[BytesLike])r3   
__future__r   rN   collections.abcr   r   typingr   httpxrJ   langgraph_sdk.schemar   r-   r   
memoryviewr   r	   r7   ra   rd   r5   r   r   <module>rl      sL    M "  3    +I
*	: :z= =@r   