
    _j>)                    h   S SK Jr  S SKrS SKrS SKJr  S SKJrJrJ	r	J
r
JrJrJrJr  S SKJrJrJrJrJrJr  S SKrSSKJr  \(       a  SSKJrJr  SS	KJr  \
" S
5      r " S S\	\   5      r " S S\	\   5      r  " S S5      r! " S S5      r"\ " S S\5      5       r#SS jr$SS.     SS jjr%g)    )annotationsN)TracebackType)TYPE_CHECKINGAnyGenericTypeVarIteratorOptionalAsyncIteratorcast)SelfProtocol	TypeGuardoverride
get_originruntime_checkable   )extract_type_var_from_base)ParallelAsyncParallel)FinalRequestOptions_Tc                      \ rS rSr% SrS\S'   SrS\S'   S\S	'   SS
.         SS jjrSS jrSS jr	SS jr
SS jrSS jr        SS jrSS jrSrg)Stream   zJProvides the core interface to iterate over a synchronous stream response.httpx.ResponseresponseNOptional[FinalRequestOptions]_optionsSSEBytesDecoder_decoderoptionsc                   X l         Xl        X0l        X@l        UR	                  5       U l        U R                  5       U l        g Nr   _cast_to_clientr   _make_sse_decoderr!   
__stream__	_iteratorselfcast_tor   clientr#   s        H/home/rurouni/.local/lib/python3.13/site-packages/parallel/_streaming.py__init__Stream.__init__   6     !002*    c                6    U R                   R                  5       $ r%   )r+   __next__r-   s    r0   r6   Stream.__next__,   s    ~~&&((r4   c              #  :   #    U R                    H  nUv   M	     g 7fr%   r+   r-   items     r0   __iter__Stream.__iter__/   s     NNDJ #s   c              #     #    U R                   R                  U R                  R                  5       5       S h  vN   g  N7fr%   )r!   
iter_bytesr   r7   s    r0   _iter_eventsStream._iter_events3   s*     ==++DMM,D,D,FGGGs   7A?Ac              #  0  #    [        [        U R                  5      nU R                  nU R                  R
                  nU R                  5       n U H  nU" UR                  5       XS9v   M     UR                  5         g ! UR                  5         f = f7fN)datar.   r   )	r   r   r'   r   r(   _process_response_datarA   jsoncloser-   r.   r   process_dataiteratorsses         r0   r*   Stream.__stream__6   ss     sDMM*==||::$$&	"
GWW   NNHNNs   AB B 0BBBc                    U $ r%    r7   s    r0   	__enter__Stream.__enter__C   s    r4   c                $    U R                  5         g r%   rH   r-   exc_typeexcexc_tbs       r0   __exit__Stream.__exit__F   s     	

r4   c                8    U R                   R                  5         gzr
Close the response and release the connection.

Automatically called if the response body is read to completion.
N)r   rH   r7   s    r0   rH   Stream.closeN   s     	r4   r'   r(   r!   r+   r   r   )
r.   type[_T]r   r   r/   r   r#   r   returnNoner_   r   )r_   zIterator[_T])r_   Iterator[ServerSentEvent]r_   r   rU   ztype[BaseException] | NonerV   zBaseException | NonerW   zTracebackType | Noner_   r`   r_   r`   )__name__
__module____qualname____firstlineno____doc____annotations__r   r1   r6   r=   rA   r*   rP   rX   rH   __static_attributes__rO   r4   r0   r   r      s    T.2H+2 26+ + !	+
 + /+ 
+)H, " %	
 
r4   r   c                      \ rS rSr% SrS\S'   SrS\S'   S\S	'   SS
.         SS jjrSS jrSS jr	SS jr
SS jrSS jr        SS jrSS jrSrg)AsyncStreamW   zLProvides the core interface to iterate over an asynchronous stream response.r   r   Nr   r   zSSEDecoder | SSEBytesDecoderr!   r"   c                   X l         Xl        X0l        X@l        UR	                  5       U l        U R                  5       U l        g r%   r&   r,   s        r0   r1   AsyncStream.__init__^   r3   r4   c                R   #    U R                   R                  5       I S h  vN $  N7fr%   )r+   	__anext__r7   s    r0   rs   AsyncStream.__anext__m   s     ^^--////s   '%'c               J   #    U R                     S h  vN nU7v   M   N
 g 7fr%   r:   r;   s     r0   	__aiter__AsyncStream.__aiter__p   s     .. 	$J	.s   #!!#!#c                  #    U R                   R                  U R                  R                  5       5        S h  vN nU7v   M   N
 g 7fr%   )r!   aiter_bytesr   )r-   rL   s     r0   rA   AsyncStream._iter_eventst   s8     224==3L3L3NO 	#I	Os%   4A
AAAA
AA
c               d  #    [        [        U R                  5      nU R                  nU R                  R
                  nU R                  5       n U  S h  vN nU" UR                  5       XS97v   M#   N
 UR                  5       I S h  vN    g ! UR                  5       I S h  vN    f = f7frD   )	r   r   r'   r   r(   rF   rA   rG   acloserI   s         r0   r*   AsyncStream.__stream__x   s     sDMM*==||::$$&	$% Xc"
GWWXX //###(//###sZ   AB0B A7A5A7B 5A77B 8B0BB0B-&B)'B--B0c                   #    U $ 7fr%   rO   r7   s    r0   
__aenter__AsyncStream.__aenter__   s
     s   c                @   #    U R                  5       I S h  vN   g  N7fr%   rS   rT   s       r0   	__aexit__AsyncStream.__aexit__   s      jjls   c                T   #    U R                   R                  5       I Sh  vN   g N7fr[   )r   r|   r7   s    r0   rH   AsyncStream.close   s      mm""$$$s   (&(r]   )
r.   r^   r   r   r/   r   r#   r   r_   r`   ra   )r_   zAsyncIterator[_T])r_   AsyncIterator[ServerSentEvent]rc   rd   re   )rf   rg   rh   ri   rj   rk   r   r1   rs   rv   rA   r*   r   r   rH   rl   rO   r4   r0   rn   rn   W   s    V.2H+2** 26+ + !	+
 + /+ 
+0$, " %	
 
%r4   rn   c                      \ rS rSrSSSSS.         SS jjr\SS j5       r\SS j5       r\SS j5       r\SS j5       r	SS	 jr
\SS
 j5       rSrg)ServerSentEvent   NeventrE   idretryc               R    Uc  SnX0l         X l        U=(       d    S U l        X@l        g )N )_id_data_event_retry)r-   r   rE   r   r   s        r0   r1   ServerSentEvent.__init__   s(     <D
mtr4   c                    U R                   $ r%   )r   r7   s    r0   r   ServerSentEvent.event       {{r4   c                    U R                   $ r%   )r   r7   s    r0   r   ServerSentEvent.id   s    xxr4   c                    U R                   $ r%   )r   r7   s    r0   r   ServerSentEvent.retry   r   r4   c                    U R                   $ r%   )r   r7   s    r0   rE   ServerSentEvent.data   s    zzr4   c                B    [         R                  " U R                  5      $ r%   )rG   loadsrE   r7   s    r0   rG   ServerSentEvent.json   s    zz$))$$r4   c           	     p    SU R                    SU R                   SU R                   SU R                   S3	$ )NzServerSentEvent(event=z, data=z, id=z, retry=)r   r7   s    r0   __repr__ServerSentEvent.__repr__   s9    '

|7499+U477)S[\`\f\f[gghiir4   )r   r   r   r   )
r   
str | NonerE   r   r   r   r   
int | Noner_   r`   )r_   r   )r_   r   )r_   str)r_   r   )rf   rg   rh   ri   r1   propertyr   r   r   rE   rG   r   r   rl   rO   r4   r0   r   r      s     !   	
   
         % j jr4   r   c                  z    \ rS rSr% S\S'   S\S'   S\S'   S\S'   SS	 jrSS
 jrSS jrSS jrSS jr	SS jr
Srg)
SSEDecoder   z	list[str]r   r   r   r   r   _last_event_idc                <    S U l         / U l        S U l        S U l        g r%   )r   r   r   r   r7   s    r0   r1   SSEDecoder.__init__   s    
"r4   c              #     #    U R                  U5       HI  nUR                  5        H2  nUR                  S5      nU R                  U5      nU(       d  M.  Uv   M4     MK     g7f)^Given an iterator that yields raw binary data, iterate over it & yield every event encounteredutf-8N)_iter_chunks
splitlinesdecoder-   rK   chunkraw_linelinerL   s         r0   r@   SSEDecoder.iter_bytes   sS     &&x0E!,,.w/kk$'3I	 / 1s   AA"A"c              #     #    SnU H;  nUR                  SS9 H%  nX$-  nUR                  S5      (       d  M  Uv   SnM'     M=     U(       a  Uv   gg7f)^Given an iterator that yields raw binary data, iterate over it and yield individual SSE chunksr4   Tkeependss   s   

s   

Nr   endswithr-   rK   rE   r   r   s        r0   r   SSEDecoder._iter_chunks   s\     E(($(7==!@AAJD	 8  J s
   2AAc                  #    U R                  U5        Sh  vN nUR                  5        H3  nUR                  S5      nU R                  U5      nU(       d  M.  U7v   M5     MR   NM
 g7f)r   Nr   )_aiter_chunksr   r   r   s         r0   ry   SSEDecoder.aiter_bytes   s[     --h7 	%!,,.w/kk$'3I	 /	7s+   A*A(A&A(;A*A*&A((A*c                  #    SnU  Sh  vN nUR                  SS9 H&  nX$-  nUR                  S5      (       d  M  U7v   SnM(     MD   N?
 U(       a  U7v   gg7f)r   r4   NTr   r   r   r   s        r0   r   SSEDecoder._aiter_chunks   sc     # 	%(($(7==!@AAJD	 8	8 J s*   AAAA+AAAAc                   U(       d  U R                   (       d0  U R                  (       d  U R                  (       d  U R                  c  g [	        U R                   SR                  U R                  5      U R                  U R                  S9nS U l         / 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  XPl         g US:X  a  U R                  R                  U5        g US:X  a  S	U;   a   g XPl         g US
:X  a   [        U5      U l        g  g ! [        [        4 a     g f = f)N
r   : r   r   rE   r    r   )r   r   r   r   r   join
startswith	partitionappendint	TypeError
ValueError)r-   r   rL   	fieldname_values         r0   r   SSEDecoder.decode   sW    ;;tzz$:M:MRVR]R]Re!kkYYtzz*&&kk	C DKDJDKJ??3"nnS1	eC  !"IEK   & JJe$  $u}  ',#  '!!%j   z*  s   5E EE)r   r   r   r   Nre   rK   Iterator[bytes]r_   rb   )rK   r   r_   r   rK   AsyncIterator[bytes]r_   r   )rK   r   r_   r   )r   r   r_   zServerSentEvent | None)rf   rg   rh   ri   rk   r1   r@   r   ry   r   r   rl   rO   r4   r0   r   r      s8    

.r4   r   c                  (    \ rS rSrSS jrSS jrSrg)r    i+  c                    g)r   NrO   r-   rK   s     r0   r@   SSEBytesDecoder.iter_bytes-      r4   c                    g)zdGiven an async iterator that yields raw binary data, iterate over it & yield every event encounteredNrO   r   s     r0   ry   SSEBytesDecoder.aiter_bytes1  r   r4   rO   Nr   r   )rf   rg   rh   ri   r@   ry   rl   rO   r4   r0   r    r    +  s    r4   r    c                    [        U 5      =(       d    U n[        R                  " U5      =(       a    [        U[        [
        45      $ )zaTypeGuard for determining whether or not the given type is a subclass of `Stream` / `AsyncStream`)r   inspectisclass
issubclassr   rn   )typorigins     r0   is_stream_class_typer   6  s0    _#F??6"Pz&6;:O'PPr4   )failure_messagec          	     @    SSK JnJn  [        U S[	        SX#45      US9$ )zGiven a type like `Stream[T]`, returns the generic type variable `T`.

This also handles the case where a concrete subclass is given, e.g.
```py
class MyStream(Stream[bytes]):
    ...

extract_stream_chunk_type(MyStream) -> bytes
```
r   )r   rn   r   ztuple[type, ...])indexgeneric_basesr   )_base_clientr   rn   r   r   )
stream_clsr   r   rn   s       r0   extract_stream_chunk_typer   <  s+     2%-/DE'	 r4   )r   typer_   z;TypeGuard[type[Stream[object]] | type[AsyncStream[object]]])r   r   r   r   r_   r   )&
__future__r   rG   r   typesr   typingr   r   r   r   r	   r
   r   r   typing_extensionsr   r   r   r   r   r   httpx_utilsr   r(   r   r   _modelsr   r   r   rn   r   r   r    r   r   rO   r4   r0   <module>r      s    "    ` ` ` ` `  .0, T]>WR[ >B?%'"+ ?%D&j &jRf fR h  Q #'   
	r4   