
    2Bf&                         d Z ddlmZ ddlZddlZddlZddlZddlZddlZdZ	 ej                  d      Z G d de      Z G d d	e      Zy)
zFclient library for iterating over http Server Sent Event (SSE) streams    )unicode_literalsNz0.0.27z\r\n\r\n|\r\r|\n\nc                   P    e Zd ZddZd Zd Zd Zd Zd Ze	j                  reZyy)		SSEClientNc                    || _         || _        || _        || _        || _        || _        d| j
                  vri | j
                  d<   d| j
                  d   d<   d| j
                  d   d<   d| _        | j                          y )Nheaderszno-cachezCache-Controlztext/event-streamAccept )urllast_idretry
chunk_sizesessionrequests_kwargsbuf_connect)selfr
   r   r   r   r   kwargss          I/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/sseclient.py__init__zSSEClient.__init__   s    
$   & D000.0D  +;EY'8 5HY'1     c                    | j                   r| j                   | j                  d   d<   | j                  xs t        } |j                  | j
                  fddi| j                  | _        | j                         | _        | j                  j                  xs | j                  j                  } t        j                  |      d      | _        | j                  j                          y )Nr   zLast-Event-IDstreamTreplace)errors)r   r   r   requestsgetr
   respiter_contentresp_iteratorencodingapparent_encodingcodecsgetincrementaldecoderdecoderraise_for_status)r   	requesterr    s      r   r   zSSEClient._connect2   s    <<?C||D  +O< LL,H	!IMM$((P4P4;O;OP	!..099%%D)D)D=v33H=YO 			""$r   c                       fd} |       S )Nc               3      K   	 t        j                  j                  d      rt        j                  j                  j                  d      rxt        j                  j                  j                  j                  d      rDj                  j                  j                  j                  j                  j                        } n/j                  j                  j                  j                        } | sy |  w)N_fpfpread1)hasattrr   rawr)   r*   r+   r   read)chunkr   s    r   generatez(SSEClient.iter_content.<locals>.generateB   s     499==%0		 1 148		 1 1 4 4g> IIMM--0066tGE
 !IIMM..t?E s   C;C> )r   r0   s   ` r   r   zSSEClient.iter_contentA   s    	 zr   c                 N    t        j                  t        | j                        d uS N)researchend_of_fieldr   r   s    r   _event_completezSSEClient._event_completeS   s    yytxx0<<r   c                     | S r3   r1   r7   s    r   __iter__zSSEClient.__iter__V   s    r   c                 L   | j                         sa	 t        | j                        }|s
t               | xj                  | j
                  j                  |      z  c_        | j                         sat)        j*                  t,        | j                  d      \  }| _        t.        j1                  |      }|j"                  r|j"                  | _        |j2                  r|j2                  | _        |S # t        t        j                  t        t        j                  j                  j                  f$ rq}t        |       t        j                   | j"                  dz         | j%                          | j                  j'                  d      \  }}}||z   | _        Y d }~d }~ww xY w)Ng     @@
   )maxsplit)r8   nextr   EOFErrorr   r$   decodeStopIterationr   RequestExceptionsixmoveshttp_clientIncompleteReadprinttimesleepr   r   
rpartitionr4   splitr6   Eventparseidr   )r   
next_chunkeheadseptailevent_stringmsgs           r   __next__zSSEClient.__next__Y   s3   &&(!$"4"45
!"*$DLL//
;; &&(* $&88L$((Q#O txkk,' 99DJ 6666DL
5 "8#<#<h		H]H]HlHlm 	a

4::./ #'(("5"5d";c4#:	s   AC1 1AF#2A&FF#)Ni  Ni   )__name__
__module____qualname__r   r   r   r8   r:   rW   rD   PY2r?   r1   r   r   r   r      s4    2%$="H ww r   r   c                   T    e Zd Z ej                  d      ZddZd Zed        Z	d Z
y)rM   z#(?P<name>[^:]*):?( ?(?P<value>.*))?Nc                 ~    t        |t        j                        sJ d       || _        || _        || _        || _        y )NzData must be text)
isinstancerD   string_typesdataeventrO   r   )r   r`   ra   rO   r   s        r   r   zEvent.__init__   s:    $ 0 01F3FF1	

r   c                    g }| j                   r|j                  d| j                   z         | j                  dk7  r|j                  d| j                  z         | j                  r|j                  d| j                  z         |j	                  d | j
                  j                  d      D               dj                  |      dz   S )Nzid: %smessagez	event: %sz	retry: %sc              3   &   K   | ]	  }d |z    yw)zdata: %sNr1   ).0ds     r   	<genexpr>zEvent.dump.<locals>.<genexpr>   s     CZ!^Cs   r<   z

)rO   appendra   r   extendr`   rL   join)r   liness     r   dumpz
Event.dump   s    77LLDGG+, ::"LLtzz12::LLtzz12CTYY__T-BCCyy&((r   c                     |        }|j                         D ]  }| j                  j                  |      }|t        j                  d|z  t
               >|j                  d      }|dk(  rU|j                  d      }|dk(  r+|j                  r|j                  d||_        ||_        |dk(  r||_        |dk(  r||_	        |d	k(  st        |      |_         |S )
z|
        Given a possibly-multiline string representing an SSE message, parse it
        and return a Event object.
        zInvalid SSE line: "%s"namer	   valuer`   r<   ra   rO   r   )
splitlinessse_line_patternmatchwarningswarnSyntaxWarninggroupr`   ra   rO   intr   )clsr-   rV   linemrn   ro   s          r   rN   zEvent.parse   s     eNN$ 	'D$$**40Ay6=}M776?DrzGGG$Ev~ 88+.88U;CH$CH!	J	3	'6 
r   c                     | j                   S r3   )r`   r7   s    r   __str__zEvent.__str__   s    yyr   )r	   rc   NN)rX   rY   rZ   r4   compilerq   r   rl   classmethodrN   r|   r1   r   r   rM   rM      s8    !rzz"GH) ! !Fr   rM   )__doc__
__future__r   r"   r4   rI   rs   rD   r   __version__r}   r6   objectr   rM   r1   r   r   <module>r      sR    L (  	   
  rzz/0f fR?F ?r   