
    c
ie                        d Z ddlmZ ddlZddlmZmZ ddlmZ ddl	Z	ddl
Z
ddlmZ eez  ez  Z G d d          Z G d	 d
          ZddZddZdS )zCAdapted from httpx_sse to split lines on 
, , 
 per the SSE spec.    )annotationsN)AsyncIteratorIterator)cast)
StreamPartc                  *    e Zd ZdZddZddZdd	Zd
S )BytesLineDecoderz
    Handles incrementally reading lines from text.

    Has the same behaviour as the stdllib bytes splitlines,
    but handling the input iteratively.
    returnNonec                :    t                      | _        d| _        d S NF)	bytearraybuffertrailing_crselfs    C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\langgraph_sdk/sse.py__init__zBytesLineDecoder.__init__   s    kk!&    textbyteslist[BytesLike]c                   d}| j         rd|z   }d| _         |                    d          rd| _         |d d         }|sg S |d         |v }t          t          t                   |                                          }t          |          dk    r$|s"| j                            |d                    g S | j        rc| j                            |d                    t          t          t                   | j        g|dd                    }t                      | _        |s,| j                            |
                                           |S )Ns   
   FT   r   )r   endswithr   list	BytesLike
splitlineslenr   extendr   pop)r   r   NEWLINE_CHARStrailing_newlineliness        r   decodezBytesLineDecoder.decode   s?     	%4<D$D== 	#D9D 	 I8}4T)_doo&7&788u::??#3?KuQx(((I; 	& KuQx(((i4;*Cqrr*CDDE#++DK 	, Kuyy{{+++r   c                j    | j         s	| j        sg S | j         g}t                      | _         d| _        |S r   )r   r   r   )r   r&   s     r   flushzBytesLineDecoder.flushD   s<    { 	4#3 	Ikk r   Nr
   r   )r   r   r
   r   )r
   r   )__name__
__module____qualname____doc__r   r'   r)    r   r   r	   r	      s[         ' ' ' '% % % %N     r   r	   c                  6    e Zd ZddZedd            Zdd	Zd
S )
SSEDecoderr
   r   c                V    d| _         t                      | _        d| _        d | _        d S )N )_eventr   _data_last_event_id_retryr   s    r   r   zSSEDecoder.__init__O   s'    [[
 "&r   
str | Nonec                    | j         pdS )z/Return the last event identifier that was seen.N)r6   r   s    r   last_event_idzSSEDecoder.last_event_idU   s     "*d*r   liner   StreamPart | Nonec                   |s}| j         s| j        s| j        s	| j        d S t	          | j         | j        rt          j        | j                  nd | j                  }d| _         t                      | _        d | _        |S |	                    d          rd S |
                    d          \  }}}|	                    d          r
|dd          }|dk    r|                                | _         n|dk    r| j                            |           nx|dk    rd	|v rnm|                                | _        nS|d
k    rLt          j        t          t                     5  t#          |          | _        d d d            n# 1 swxY w Y   n	 d S )N)eventdataidr3      :    r   s   events   datas   id    s   retry)r4   r5   r6   r7   r   orjsonloadsr:   r   
startswith	partitionr'   r"   
contextlibsuppress	TypeError
ValueErrorint)r   r;   sse	fieldname_values         r   r'   zSSEDecoder.decode[   s     	K
 + K'tk15EV\$*---%  C DK"DJDKJ??4   	4"nnT22	1eD!! 	!""IE  ,,..DKK'!!Je$$$$%~~&+llnn##(""$Y
;; ) )!%jj) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ts   E;;E?E?Nr*   )r
   r8   )r;   r   r
   r<   )r+   r,   r-   r   propertyr:   r'   r/   r   r   r1   r1   N   s\        ' ' ' ' + + + X+
0 0 0 0 0 0r   r1   responsehttpx.Responser
   AsyncIterator[BytesLike]c                  K   t                      }|                                 2 3 d {V }|                    |          D ]}|W V  %6 |                                D ]}|W V  d S N)r	   aiter_bytesr'   r)   rR   decoderchunkr;   s       r   aiter_lines_rawr[      s        G++--       eNN5)) 	 	DJJJJJ	 .   




 s   A
Iterator[BytesLike]c              #     K   t                      }|                                 D ]}|                    |          D ]}|V  |                                D ]}|V  d S rV   )r	   
iter_bytesr'   r)   rX   s       r   iter_lines_rawr_      s        G$$&&  NN5)) 	 	DJJJJ	  



 r   )rR   rS   r
   rT   )rR   rS   r
   r\   )r.   
__future__r   rH   collections.abcr   r   typingr   httpxrD   langgraph_sdk.schemar   r   r   
memoryviewr   r	   r1   r[   r_   r/   r   r   <module>rf      s
   M M " " " " " "     3 3 3 3 3 3 3 3         + + + + + +I
*	: : : : : : : :z= = = = = = = =@        r   