Ë
    $Æ%hÆ3  ã                  óX  — d dl mZ d dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
mZmZmZ d dlmZmZmZmZmZmZ d dlZddlmZmZ ddlmZ erdd	lmZmZ  e
d
«      Z G d„ de	e   «      Z G d„ de	e   «      Z  G d„ d«      Z! G d„ d«      Z"e G d„ de«      «       Z#dd„Z$ddœ	 	 	 	 	 dd„Z%y)é    )ÚannotationsN)ÚTracebackType)ÚTYPE_CHECKINGÚAnyÚGenericÚTypeVarÚIteratorÚAsyncIteratorÚcast)ÚSelfÚProtocolÚ	TypeGuardÚoverrideÚ
get_originÚruntime_checkableé   )Ú
is_mappingÚextract_type_var_from_base)ÚAPIError)ÚOpenAIÚAsyncOpenAIÚ_Tc                  ó†   — e Zd ZU dZded<   ded<   	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd	„Zdd
„Z	dd„Z
	 	 	 	 	 	 	 	 dd„Zdd„Zy)ÚStreamzJProvides the core interface to iterate over a synchronous stream response.úhttpx.ResponseÚresponseÚSSEBytesDecoderÚ_decoderc               ó‚   — || _         || _        || _        |j                  «       | _        | j                  «       | _        y ©N©r   Ú_cast_toÚ_clientÚ_make_sse_decoderr   Ú
__stream__Ú	_iterator©ÚselfÚcast_tor   Úclients       úO/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/openai/_streaming.pyÚ__init__zStream.__init__   ó7   € ð !ˆŒØˆŒØˆŒØ×0Ñ0Ó2ˆŒØŸ™Ó*ˆ�ó    c                ó6   — | j                   j                  «       S r    )r&   Ú__next__©r(   s    r+   r0   zStream.__next__*   s   € Ø�~‰~×&Ñ&Ó(Ð(r.   c              #  ó6   K  — | j                   D ]  }|–— Œ y ­wr    ©r&   ©r(   Úitems     r+   Ú__iter__zStream.__iter__-   s   è ø€ Ø—N‘Nò 	ˆDØ‹Jñ	ùs   ‚c              #  ó†   K  — | j                   j                  | j                  j                  «       «      E d {  –—†  y 7 Œ­wr    )r   Ú
iter_bytesr   r1   s    r+   Ú_iter_eventszStream._iter_events1   s+   è ø€ Ø—=‘=×+Ñ+¨D¯M©M×,DÑ,DÓ,FÓG×GÒGús   ‚7A¹?ºAc              #  óD  K  — t        t        | j                  «      }| j                  }| j                  j
                  }| j                  «       }|D �]Ã  }|j                  j                  d«      r �n¥|j                  �6|j                  j                  d«      s|j                  j                  d«      r£|j                  «       }t        |«      ry|j                  d«      rhd }|j                  d«      }t        |«      r|j                  d«      }|rt        |t        «      sd}t        || j                  j                   |d   ¬«      ‚ ||||¬«      –— �Œ|j                  «       }|j                  dk(  r„t        |«      ry|j                  d«      rhd }|j                  d«      }t        |«      r|j                  d«      }|rt        |t        «      sd}t        || j                  j                   |d   ¬«      ‚ |||j                  d	œ||¬«      –— �ŒÆ |D ]  }	Œ y ­w©
Nz[DONE]z	response.ztranscript.ÚerrorÚmessagez"An error occurred during streaming)r=   ÚrequestÚbody)Údatar)   r   )r@   Úevent©r   r   r"   r   r#   Ú_process_response_datar9   r@   Ú
startswithrA   Újsonr   ÚgetÚ
isinstanceÚstrr   r>   ©
r(   r)   r   Úprocess_dataÚiteratorÚsser@   r=   r<   Ú_sses
             r+   r%   zStream.__stream__4   s×  è ø€ Ü”s˜DŸM™MÓ*ˆØ—=‘=ˆØ—|‘|×:Ñ:ˆØ×$Ñ$Ó&ˆàó '	pˆCØ�x‰x×"Ñ" 8Ô,Úà�y‰yÐ  C§I¡I×$8Ñ$8¸Ô$EÈÏÉ×I]ÑI]Ð^kÔIlØ—x‘x“z�Ü˜dÔ#¨¯©°Ô(9Ø"�GØ ŸH™H WÓ-�EÜ! %Ô(Ø"'§)¡)¨IÓ"6˜Ù"¬*°W¼cÔ*BØ"F˜ä"Ø 'Ø $§¡× 5Ñ 5Ø! '™]ôð ñ #¨°gÈÔQÔQð —x‘x“z�à—9‘9 Ò'¬J°tÔ,<ÀÇÁÈ'ÔARØ"�GØ ŸH™H WÓ-�EÜ! %Ô(Ø"'§)¡)¨IÓ"6˜Ù"¬*°W¼cÔ*BØ"F˜ä"Ø 'Ø $§¡× 5Ñ 5Ø! '™]ôð ñ #°ÀÇ	Á	Ñ(JÐT[ÐfnÔoÔoðO'	pðT ò 	ˆDØñ	ùs   ‚HH c                ó   — | S r    © r1   s    r+   Ú	__enter__zStream.__enter__g   s   € Øˆr.   c                ó$   — | j                  «        y r    ©Úclose©r(   Úexc_typeÚexcÚexc_tbs       r+   Ú__exit__zStream.__exit__j   s   € ð 	�
‰
�r.   c                ó8   — | j                   j                  «        y©zŠ
        Close the response and release the connection.

        Automatically called if the response body is read to completion.
        N)r   rS   r1   s    r+   rS   zStream.closer   s   € ð 	�‰×ÑÕr.   N)r)   útype[_T]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__Ú__doc__Ú__annotations__r,   r0   r6   r9   r%   rP   rX   rS   rO   r.   r+   r   r      s‰   … ÙTàÓàÓð+ð ð+ð !ð	+ð
 ð+ð 
ó+ó)óóHó1ófðà,ðð "ðð %ð	ð
 
óôr.   r   c                  ó†   — e Zd ZU dZded<   ded<   	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd	„Zdd
„Z	dd„Z
	 	 	 	 	 	 	 	 dd„Zdd„Zy)ÚAsyncStreamzLProvides the core interface to iterate over an asynchronous stream response.r   r   zSSEDecoder | SSEBytesDecoderr   c               ó‚   — || _         || _        || _        |j                  «       | _        | j                  «       | _        y r    r!   r'   s       r+   r,   zAsyncStream.__init__‚   r-   r.   c              ƒ  óR   K  — | j                   j                  «       ƒ d {  –—† S 7 Œ­wr    )r&   Ú	__anext__r1   s    r+   rl   zAsyncStream.__anext__�   s   è ø€ Ø—^‘^×-Ñ-Ó/×/Ð/Ð/ús   ‚' %¡'c               óH   K  — | j                   2 3 d {  –—† }|­–— Œ7 Œ
6 y ­wr    r3   r4   s     r+   Ú	__aiter__zAsyncStream.__aiter__’   s&   è ø€ ØŸ.™.÷ 	ð 	�$ØŒJð	ø™.ùs   ‚"� “” —"ž  "c               ó–   K  — | j                   j                  | j                  j                  «       «      2 3 d {  –—† }|­–— Œ7 Œ
6 y ­wr    )r   Úaiter_bytesr   )r(   rL   s     r+   r9   zAsyncStream._iter_events–   s?   è ø€ ØŸ™×2Ñ2°4·=±=×3LÑ3LÓ3NÓO÷ 	ð 	�#ØŒIð	øÑOùs%   ‚4A	¶AºA»A¾A	ÁAÁA	c               ój  K  — t        t        | j                  «      }| j                  }| j                  j
                  }| j                  «       }|2 3 d {  –—† }|j                  j                  d«      r �n¦|j                  �6|j                  j                  d«      s|j                  j                  d«      r¤|j                  «       }t        |«      ry|j                  d«      rhd }|j                  d«      }t        |«      r|j                  d«      }|rt        |t        «      sd}t        || j                  j                   |d   ¬«      ‚ ||||¬«      ­–— �Œ|j                  «       }|j                  dk(  r„t        |«      ry|j                  d«      rhd }|j                  d«      }t        |«      r|j                  d«      }|rt        |t        «      sd}t        || j                  j                   |d   ¬«      ‚ |||j                  d	œ||¬«      ­–— �ŒÍ|2 3 d {  –—† }	Œ
7 �ŒÕ6 Œ7 Œ
6 y ­wr;   rB   rI   s
             r+   r%   zAsyncStream.__stream__š   sé  è ø€ Ü”s˜DŸM™MÓ*ˆØ—=‘=ˆØ—|‘|×:Ñ:ˆØ×$Ñ$Ó&ˆà!÷ '	pð '	p�#Ø�x‰x×"Ñ" 8Ô,Úà�y‰yÐ  C§I¡I×$8Ñ$8¸Ô$EÈÏÉ×I]ÑI]Ð^kÔIlØ—x‘x“z�Ü˜dÔ#¨¯©°Ô(9Ø"�GØ ŸH™H WÓ-�EÜ! %Ô(Ø"'§)¡)¨IÓ"6˜Ù"¬*°W¼cÔ*BØ"F˜ä"Ø 'Ø $§¡× 5Ñ 5Ø! '™]ôð ñ #¨°gÈÔQÕQð —x‘x“z�à—9‘9 Ò'¬J°tÔ,<ÀÇÁÈ'ÔARØ"�GØ ŸH™H WÓ-�EÜ! %Ô(Ø"'§)¡)¨IÓ"6˜Ù"¬*°W¼cÔ*BØ"F˜ä"Ø 'Ø $§¡× 5Ñ 5Ø! '™]ôð ñ #°ÀÇ	Á	Ñ(JÐT[ÐfnÔoÕoð #÷ 	ð 	�$ØðW'	pù˜øðT	ø™(ùsO   ‚AH3ÁH-ÁH*ÁH-ÁGH3È H1È$H/È%H1È(H3È*H-È-H3È/H1È1H3c              ƒ  ó   K  — | S ­wr    rO   r1   s    r+   Ú
__aenter__zAsyncStream.__aenter__Í   s   è ø€ Øˆùs   ‚c              ƒ  ó@   K  — | j                  «       ƒ d {  –—†  y 7 Œ­wr    rR   rT   s       r+   Ú	__aexit__zAsyncStream.__aexit__Ð   s   è ø€ ð �j‰j‹l×Òús   ‚–—c              ƒ  óT   K  — | j                   j                  «       ƒ d{  –—†  y7 Œ­wrZ   )r   Úacloser1   s    r+   rS   zAsyncStream.closeØ   s   è ø€ ð �m‰m×"Ñ"Ó$×$Ò$ús   ‚( &¡(N)r)   r[   r   r   r*   r   r\   r]   r^   )r\   zAsyncIterator[_T])r\   úAsyncIterator[ServerSentEvent]r`   ra   rb   )rc   rd   re   rf   rg   r,   rl   rn   r9   r%   rs   ru   rS   rO   r.   r+   ri   ri   {   sˆ   … ÙVàÓà*Ó*ð+ð ð+ð !ð	+ð
 ð+ð 
ó+ó0óóó1ófðà,ðð "ðð %ð	ð
 
óô%r.   ri   c                  ó”   — e Zd Zdddddœ	 	 	 	 	 	 	 	 	 d
d„Zedd„«       Zedd„«       Zedd„«       Zedd„«       Zdd„Z	e
dd	„«       Zy)ÚServerSentEventN©rA   r@   ÚidÚretryc               óL   — |€d}|| _         || _        |xs d | _        || _        y )NÚ )Ú_idÚ_dataÚ_eventÚ_retry)r(   rA   r@   r|   r}   s        r+   r,   zServerSentEvent.__init__â   s.   € ð ˆ<ØˆDàˆŒØˆŒ
Ø’m˜tˆŒØˆ�r.   c                ó   — | j                   S r    )r‚   r1   s    r+   rA   zServerSentEvent.eventò   ó   € à�{‰{Ðr.   c                ó   — | j                   S r    )r€   r1   s    r+   r|   zServerSentEvent.idö   s   € à�x‰xˆr.   c                ó   — | j                   S r    )rƒ   r1   s    r+   r}   zServerSentEvent.retryú   r…   r.   c                ó   — | j                   S r    )r�   r1   s    r+   r@   zServerSentEvent.dataþ   s   € à�z‰zÐr.   c                ó@   — t        j                  | j                  «      S r    )rE   Úloadsr@   r1   s    r+   rE   zServerSentEvent.json  s   € Ü�z‰z˜$Ÿ)™)Ó$Ð$r.   c           	     óp   — d| j                   › d| j                  › d| j                  › d| j                  › d�	S )NzServerSentEvent(event=z, data=z, id=z, retry=ú)r{   r1   s    r+   Ú__repr__zServerSentEvent.__repr__  s9   € à'¨¯
©
 |°7¸4¿9¹9¸+ÀUÈ4Ï7É7È)ÐS[Ð\`×\fÑ\fÐ[gÐghÐiÐir.   )
rA   ú
str | Noner@   rŽ   r|   rŽ   r}   ú
int | Noner\   r]   )r\   rŽ   )r\   r�   )r\   rH   )r\   r   )rc   rd   re   r,   ÚpropertyrA   r|   r}   r@   rE   r   r�   rO   r.   r+   rz   rz   á   s²   „ ð !ØØØ ñð ðð ð	ð
 ðð ðð 
óð  òó ðð òó ðð òó ðð òó ðó%ð òjó ñjr.   rz   c                  óf   — e Zd ZU ded<   ded<   ded<   ded<   dd„Zdd	„Zdd
„Zdd„Zdd„Zdd„Z	y)Ú
SSEDecoderz	list[str]r�   rŽ   r‚   r�   rƒ   Ú_last_event_idc                ó<   — d | _         g | _        d | _        d | _        y r    )r‚   r�   r“   rƒ   r1   s    r+   r,   zSSEDecoder.__init__  s   € ØˆŒØˆŒ
Ø"ˆÔØˆ�r.   c              #  ó´   K  — | j                  |«      D ]@  }|j                  «       D ]+  }|j                  d«      }| j                  |«      }|sŒ(|–— Œ- ŒB y­w)ú^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         r+   r8   zSSEDecoder.iter_bytes  s\   è ø€ à×&Ñ& xÓ0ò 	ˆEà!×,Ñ,Ó.ò �Ø—‘ wÓ/�Ø—k‘k $Ó'�ÚØ“Iñ	ñ	ùs   ‚AAÁ	Ac              #  ó”   K  — d}|D ]6  }|j                  d¬«      D ]  }||z  }|j                  d«      sŒ|–— d}Œ! Œ8 |r|–— yy­w)ú^Given an iterator that yields raw binary data, iterate over it and yield individual SSE chunksr.   T©Úkeepends©s   s   

s   

N©r™   Úendswith©r(   rK   r@   rœ   rž   s        r+   r˜   zSSEDecoder._iter_chunks   sf   è ø€ àˆØò 	ˆEØ×(Ñ(°$Ð(Ó7ò �Ø˜‘�Ø—=‘=Ð!@ÕAØ’JØ‘Dñ	ð	ñ Ø‹Jð ùs
   ‚3A¶Ac               óÆ   K  — | j                  |«      2 3 d{  –—† }|j                  «       D ],  }|j                  d«      }| j                  |«      }|sŒ(|­–— Œ. ŒI7 ŒD6 y­w)r–   Nr—   )Ú_aiter_chunksr™   rš   r›   s         r+   rp   zSSEDecoder.aiter_bytes,  se   è ø€ à×-Ñ-¨hÓ7÷ 	ð 	�%à!×,Ñ,Ó.ò �Ø—‘ wÓ/�Ø—k‘k $Ó'�ÚØ”Iñ	ð	øÑ7ùs+   ‚A!”A˜A™Aœ8A!ÁA!ÁAÁA!c               ó¨   K  — d}|2 3 d{  –—† }|j                  d¬«      D ]   }||z  }|j                  d«      sŒ|­–— d}Œ" Œ?7 Œ:6 |r|­–— yy­w)r    r.   NTr¡   r£   r¤   r¦   s        r+   r¨   zSSEDecoder._aiter_chunks6  sn   è ø€ àˆØ#÷ 	ð 	�%Ø×(Ñ(°$Ð(Ó7ò �Ø˜‘�Ø—=‘=Ð!@ÕAØ“JØ‘Dñ	ð	ø˜8ñ ØŒJð ùs*   ‚A‡A‹AŒA�,A¼
AÁAÁ
Ac                ó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)Nú
r{   ú:ú r   rA   r@   r|   ú r}   )r‚   r�   r“   rƒ   rz   ÚjoinrD   Ú	partitionÚappendÚintÚ	TypeErrorÚ
ValueError)r(   rž   rL   Ú	fieldnameÚ_Úvalues         r+   rš   zSSEDecoder.decodeB  sW  € ñ Ø—;’; t§z¢z¸$×:MÒ:MÐRV×R]ÑR]ÐReØä!Ø—k‘kØ—Y‘Y˜tŸz™zÓ*Ø×&Ñ&Ø—k‘kô	ˆCð ˆDŒKØˆDŒJØˆDŒKàˆJà�?‰?˜3ÔØà"Ÿn™n¨SÓ1Ñˆ	�1�eà×Ñ˜CÔ Ø˜!˜"�IˆEà˜ÒØˆDŒKð  ð ˜&Ò Ø�J‰J×Ñ˜eÔ$ð ð ˜$ÒØ�u‰}Øð ð ',�Ô#ð ð ˜'Ò!ðÜ! %›j�”ð ð àøô œzÐ*ò Øð ðús   ÄD( Ä(D:Ä9D:Nrb   ©rK   úIterator[bytes]r\   r_   )rK   r¹   r\   r¹   ©rK   úAsyncIterator[bytes]r\   rx   )rK   r»   r\   r»   )rž   rH   r\   zServerSentEvent | None)
rc   rd   re   rg   r,   r8   r˜   rp   r¨   rš   rO   r.   r+   r’   r’   
  s8   … ØÓØÓØÓØÓóóó
óó
ô.r.   r’   c                  ó   — e Zd Zdd„Zdd„Zy)r   c                 ó   — y)r–   NrO   ©r(   rK   s     r+   r8   zSSEBytesDecoder.iter_bytesu  ó   € àr.   c                 ó   — y)zdGiven an async iterator that yields raw binary data, iterate over it & yield every event encounteredNrO   r¾   s     r+   rp   zSSEBytesDecoder.aiter_bytesy  r¿   r.   Nr¸   rº   )rc   rd   re   r8   rp   rO   r.   r+   r   r   s  s   „ óôr.   r   c                óz   — t        | «      xs | }t        j                  |«      xr t        |t        t
        f«      S )zaTypeGuard for determining whether or not the given type is a subclass of `Stream` / `AsyncStream`)r   ÚinspectÚisclassÚ
issubclassr   ri   )ÚtypÚorigins     r+   Úis_stream_class_typerÇ   ~  s0   € ä˜‹_Ò# €FÜ�?‰?˜6Ó"ÒP¤z°&¼6Ä;Ð:OÓ'PÐPr.   )Úfailure_messagec          	     óH   — ddl m}m} t        | dt	        d||f«      |¬«      S )a  Given 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   ri   r   ztuple[type, ...])ÚindexÚgeneric_basesrÈ   )Ú_base_clientr   ri   r   r   )Ú
stream_clsrÈ   r   ri   s       r+   Úextract_stream_chunk_typerÎ   „  s-   € ÷ 2ä%ØØÜÐ-°¸Ð/DÓEØ'ô	ð r.   )rÅ   Útyper\   z;TypeGuard[type[Stream[object]] | type[AsyncStream[object]]])rÍ   rÏ   rÈ   rŽ   r\   rÏ   )&Ú
__future__r   rE   rÂ   Útypesr   Útypingr   r   r   r   r	   r
   r   Útyping_extensionsr   r   r   r   r   r   ÚhttpxÚ_utilsr   r   Ú_exceptionsr   r#   r   r   r   r   ri   rz   r’   r   rÇ   rÎ   rO   r.   r+   ú<module>r×      sÁ   ðå "ã Û Ý ß V× VÑ Vß `× `ã ç :Ý !áß,ñ ˆTƒ]€ôbˆW�R‰[ô bôJc%�'˜"‘+ô c%÷L&jñ &j÷Rfñ fðR ô�hó ó ðóQð #'ñØðð  ðð 
ô	r.   