
    ~3fi                     ^    d dl mZmZ ddlmZ dedee   fdZ G d d      Z G d	 d
      Zy)    )ListOptional   )ServerSentEventtextreturnc                     | sg S d| vr| j                  d      }n3| j                  dd      j                  dd      }|j                  d      }| d   dv r|j                          |S )zSplit text on 
, , or 
 only.
z
)splitreplacepop)r   lines
normalizeds      Q/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/httpx_sse/_decoders.py_splitlines_sser      sg    	4

4 \\&$/77dC
  &Bx6		L    c                   @    e Zd ZdZddZdedee   fdZdee   fdZy)	SSELineDecodera  
    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                      g | _         d| _        y )NF)buffertrailing_crselfs    r   __init__zSSELineDecoder.__init__    s    !#!&r   r   c                    | j                   rd|z   }d| _         |j                  d      rd| _         |d d }|sg S |d   dv }t        |      }t        |      dk(  r"|s | j                  j                  |d          g S | j                  r/dj                  | j                        |d   z   g|dd  z   }g | _        |s|j                         g| _        |S )	Nr
   FTr   z
r   r    )r   endswithr   lenr   appendjoinr   )r   r   trailing_newliner   s       r   decodez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                     | j                   s| j                  sg S dj                  | j                         g}g | _         d| _        |S )Nr   F)r   r   r"   )r   r   s     r   flushzSSELineDecoder.flushG   s?    {{4#3#3I%& r   r   N)	__name__
__module____qualname____doc__r   strlistr$   r&    r   r   r   r      s4    '!3 !49 !FtCy r   r   c                   *    e Zd ZddZdedee   fdZy)
SSEDecoderr   Nc                 <    d| _         g | _        d| _        d | _        y )Nr   )_event_data_last_event_id_retryr   s    r   r   zSSEDecoder.__init__R   s     "
 %)r   linec                 z   |s| j                   s%| j                  s| j                  s| j                  y t	        | j                   dj                  | j                        | j                  | j                        }d| _         g | _        d | _        |S |j                  d      ry |j                  d      \  }}}|j                  d      r|dd  }|dk(  r|| _         y |dk(  r| j                  j                  |       y |d	k(  rd
|v r	 y || _        y |dk(  r	 t        |      | _        y 	 y # t        t        f$ r Y y w xY w)Nr   )eventdataidretryr   : r   r8   r9   r:    r;   )r2   r3   r4   r5   r   r"   
startswith	partitionr!   int	TypeError
ValueError)r   r6   sse	fieldname_values         r   r$   zSSEDecoder.decodeX   sW    KK

++KK'!kkYYtzz*&&kk	C DKDJDKJ??3"nnS1	1eC !"IEDK   & JJe$  $u}  ',#  '!!%j   z*  s   D( (D:9D:r'   )r(   r)   r*   r   r,   r   r   r$   r.   r   r   r0   r0   Q   s    *33 38O#< 3r   r0   N)	typingr   r   _modelsr   r,   r   r   r0   r.   r   r   <module>rJ      s7    ! $# $s) "7 7t: :r   