
    osj;                        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
mZ ddlmZ g d	Z G d
 de      Z e	d       G d d             Z G d d      Z G d d      Z G d d      Zy)z
Server-sent events support, derived from httpx-sse (https://github.com/florimondmanca/httpx-sse).

Copyright (c) 2022 Florimond Manca, MIT License (https://github.com/florimondmanca/httpx-sse/blob/master/LICENSE).
    )annotationsN)AsyncIteratorIterator)	dataclass   )TransportError)Response)EventSourceSSEErrorServerSentEventc                      e Zd ZdZy)r   zS
    An error that occurred while connecting to a server-sent events endpoint.
    N)__name__
__module____qualname____doc__     >/root/.hermes/venv/lib/python3.12/site-packages/httpx2/_sse.pyr   r      s    r   r   T)frozenc                  N    e Zd ZU dZded<   dZded<   dZded<   dZded	<   dd
Zy)r   messagestrevent dataidNz
int | Noneretryc                @    t        j                  | j                        S N)jsonlibloadsr   selfs    r   jsonzServerSentEvent.json    s    }}TYY''r   )returnobject)	r   r   r   r   __annotations__r   r   r   r$   r   r   r   r   r      s-    E3D#NBLE:(r   r   c                      e Zd ZddZddZy)_SSEDecoderc                J    d| _         g | _        d| _        d | _        d| _        y Nr   F)_event_data_last_event_id_retry_pendingr"   s    r   __init__z_SSEDecoder.__init__%   s&     "
 "&r   c                r   |su| j                   sy t        | j                  xs ddj                  | j                        | j
                  | j                        }d| _        g | _        d | _        d| _         |S |j                  d      ry |j                  d      \  }}}|j                  d      r|dd  n|}|d	k(  r|| _        d
| _         y |dk(  r#| j                  j                  |       d
| _         y |dk(  rd|vr|| _        d
| _         y |dk(  r	 t        |      | _        d
| _         y y # t        $ r Y y w xY w)Nr   
)r   r   r   r   r   F: r   r   Tr   r    r   )r0   r   r,   joinr-   r.   r/   
startswith	partitionappendint
ValueError)r#   linesse	fieldname_values         r   decodez_SSEDecoder.decode,   sL   ==!kk.YYYtzz*&&kk	C DKDJDK!DMJ??3"nnS1	1e"--c2ab	DK DM  & JJe$ DM  $5 &+# $  '!!%j $   s   D* *	D65D6Nr%   None)r=   r   r%   zServerSentEvent | None)r   r   r   r1   rB   r   r   r   r)   r)   $   s    (r   r)   c                  $    e Zd ZddZddZddZy)_SSELineDecoderc                     d| _         d| _        y r+   )_buffer_trailing_crr"   s    r   r1   z_SSELineDecoder.__init__X   s    !r   c                   | j                   rd|z   }d| _         |j                  d      rd| _         |d d }| j                  |j                  dd      j                  dd      z   }|j	                  d      }|j                         | _        |S )NFTz
r3   )rI   endswithrH   replacesplitpop)r#   textliness      r   rB   z_SSELineDecoder.decode\   s    $;D %D== $D9D||dll648@@tLL

4 yy{r   c                    | j                   r| xj                  dz  c_        d| _         | j                  sg S | j                  j                  d      }d| _        |S )Nr3   Fr   )rI   rH   rO   )r#   rR   s     r   flushz_SSELineDecoder.flushi   sM    LLD L %D||I""4(r   NrC   )rQ   r   r%   	list[str])r%   rU   )r   r   r   r1   rB   rT   r   r   r   rF   rF   W   s    "r   rF   c                  >    e Zd ZddZedd       Zd	dZd
dZddZy)r
   c                    || _         y r   	_response)r#   responses     r   r1   zEventSource.__init__u   s	    !r   c                    | j                   S r   rX   r"   s    r   rZ   zEventSource.responsex   s    ~~r   c                   | j                   j                  j                  dd      j                  d      \  }}}|j	                         j                         dk7  r3t        d|j	                         d| j                   j                        y )Nzcontent-typer   ;ztext/event-streamz=Expected response with content type 'text/event-stream', got .)request)rY   headersgetr9   striplowerr   r_   )r#   content_typer@   s      r   _check_content_typezEventSource._check_content_type|   s    !^^3377KUUVYZa%%'+>>OP\PbPbPdOgghi..  ?r   c              #  H  K   | j                          t               }t               }| j                  j	                         D ]0  }|j                  |      D ]  }|j                  |      }||  2 |j                         D ]  }|j                  |      }||  y wr   )re   r)   rF   rY   	iter_textrB   rT   r#   decoderrR   chunkr=   r>   s         r   __iter__zEventSource.__iter__   s       "-!^^--/ 	EU+ nnT*?I	
 KKM 	D..&C		s   A)B",.B"B"c               \  K   | j                          t               }t               }| j                  j	                         2 3 d {   }|j                  |      D ]  }|j                  |      }||  97 46 |j                         D ]  }|j                  |      }||  y wr   )re   r)   rF   rY   
aiter_textrB   rT   rh   s         r   	__aiter__zEventSource.__aiter__   s       "-!>>446 	 	%U+ nnT*?I	6
 KKM 	D..&C		s5   ?B,A<A:A<	(B,2B,:A<<'B,$B,N)rZ   r	   r%   rD   )r%   r	   rC   )r%   zIterator[ServerSentEvent])r%   zAsyncIterator[ServerSentEvent])	r   r   r   r1   propertyrZ   re   rk   rn   r   r   r   r
   r
   t   s*    "  r   r
   )r   
__future__r   r$   r    collections.abcr   r   dataclassesr   _exceptionsr   _modelsr	   __all__r   r   r)   rF   r
   r   r   r   <module>rv      sl    #  3 ! ' 
8~  $( ( (0 0f :* *r   