Ë
    @²Xj9  ã                  óh  — 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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 dd
l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ÚOptionalÚAsyncIteratorÚcast)ÚSelfÚProtocolÚ	TypeGuardÚoverrideÚ
get_originÚruntime_checkableé   )Ú
is_mappingÚextract_type_var_from_base)ÚAPIError)ÚOpenAIÚAsyncOpenAI)ÚFinalRequestOptionsÚ_Tc                  óœ   — e Zd ZU dZded<   dZded<   ded<   d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ÚresponseNúOptional[FinalRequestOptions]Ú_optionsÚSSEBytesDecoderÚ_decoder©Úoptionsc               ó�   — || _         || _        || _        || _        |j	                  «       | _        | j                  «       | _        y ©N©r   Ú_cast_toÚ_clientr    Ú_make_sse_decoderr"   Ú
__stream__Ú	_iterator©ÚselfÚcast_tor   Úclientr$   s        úW/var/www/html/content_generation/venv/lib/python3.12/site-packages/openai/_streaming.pyÚ__init__zStream.__init__   ó>   € ð !ˆŒØˆŒØˆŒØˆŒØ×0Ñ0Ó2ˆŒØŸ™Ó*ˆ�ó    c                ó6   — | j                   j                  «       S r&   )r,   Ú__next__©r.   s    r1   r6   zStream.__next__-   s   € Ø�~‰~×&Ñ&Ó(Ð(r4   c              #  ó6   K  — | j                   D ]  }|–— Œ y ­wr&   ©r,   ©r.   Úitems     r1   Ú__iter__zStream.__iter__0   s   è ø€ Ø—N”NˆDØ‹Jñ #ùs   ‚c              #  ó†   K  — | j                   j                  | j                  j                  «       «      E d {  –—†  y 7 Œ­wr&   )r"   Ú
iter_bytesr   r7   s    r1   Ú_iter_eventszStream._iter_events4   s+   è ø€ Ø—=‘=×+Ñ+¨D¯M©M×,DÑ,DÓ,FÓG×GÒGús   ‚7A¹?ºAc              #  ó®  K  — t        t        | j                  «      }| j                  }| j                  j
                  }| j                  «       }	 |D �]Ù  }|j                  j                  d«      r �n»|j                  rÚ|j                  j                  d«      r¿|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œ||¬«      –— �Œ|j                  «       }t        |«      ry|j                  d«      rhd }|j                  d«      }t        |«      r|j                  d«      }|rt        |t        «      sd}t        || j                  j                   |d   ¬«      ‚ || j"                  �%| j"                  j$                  r||j                  dœn|||¬«      –— �ŒÜ |j'                  «        y # |j'                  «        w xY w­w©	Nz[DONE]zthread.ÚerrorÚmessagez"An error occurred during streaming)rC   ÚrequestÚbody)ÚdataÚevent)rF   r/   r   )r   r   r(   r   r)   Ú_process_response_datar?   rF   Ú
startswithrG   Újsonr   ÚgetÚ
isinstanceÚstrr   rD   r    Úsynthesize_event_and_dataÚclose©	r.   r/   r   Úprocess_dataÚiteratorÚsserF   rC   rB   s	            r1   r+   zStream.__stream__7   sí  è ø€ Ü”s˜DŸM™MÓ*ˆØ—=‘=ˆØ—|‘|×:Ñ:ˆØ×$Ñ$Ó&ˆð1	Ü�Ø—8‘8×&Ñ& xÔ0Úð —9’9 §¡×!5Ñ!5°iÔ!@ØŸ8™8›:�Dà—y‘y GÒ+´
¸4Ô0@ÀTÇXÁXÈgÔEVØ"&˜Ø $§¡¨Ó 1˜Ü% eÔ,Ø&+§i¡i°	Ó&:˜GÙ&¬j¸Ä#Ô.FØ&J˜Gä&Ø$+Ø$(§M¡M×$9Ñ$9Ø!% g¡ôð ñ '°TÀCÇIÁIÑ,NÐX_ÐjrÔsÔsàŸ8™8›:�DÜ! $Ô'¨D¯H©H°WÔ,=Ø"&˜Ø $§¡¨Ó 1˜Ü% eÔ,Ø&+§i¡i°	Ó&:˜GÙ&¬j¸Ä#Ô.FØ&J˜Gä&Ø$+Ø$(§M¡M×$9Ñ$9Ø!% g¡ôð ñ 'àŸ=™=Ð4¸¿¹×9`Ò9`ð '+°S·Y±YÒ?à!Ø 'Ø!)ôô ðO  ð` �N‰NÕøˆH�N‰NÕüs   ‚AIÁGI  È/IÉ IÉIc                ó   — | S r&   © r7   s    r1   Ú	__enter__zStream.__enter__p   s   € Øˆr4   c                ó$   — | j                  «        y r&   ©rO   ©r.   Úexc_typeÚexcÚexc_tbs       r1   Ú__exit__zStream.__exit__s   s   € ð 	�
‰
�r4   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   rO   r7   s    r1   rO   zStream.close{   s   € ð 	�‰×ÑÕr4   )
r/   útype[_T]r   r   r0   r   r$   r   ÚreturnÚNone©ra   r   )ra   zIterator[_T])ra   úIterator[ServerSentEvent]©ra   r   ©rZ   ztype[BaseException] | Noner[   zBaseException | Noner\   zTracebackType | Nonera   rb   ©ra   rb   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r    r2   r6   r<   r?   r+   rV   r]   rO   rU   r4   r1   r   r      s£   … ÙTàÓØ.2€HÐ+Ó2ØÓð 26ñ+ð ð+ð !ð	+ð
 ð+ð /ð+ð 
ó+ó)óóHó7órðà,ðð "ðð %ð	ð
 
óôr4   r   c                  óœ   — e Zd ZU dZded<   dZded<   ded<   d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   Nr   r    zSSEDecoder | SSEBytesDecoderr"   r#   c               ó�   — || _         || _        || _        || _        |j	                  «       | _        | j                  «       | _        y r&   r'   r-   s        r1   r2   zAsyncStream.__init__‹   r3   r4   c              ƒ  óR   K  — | j                   j                  «       ƒ d {  –—† S 7 Œ­wr&   )r,   Ú	__anext__r7   s    r1   rq   zAsyncStream.__anext__š   s   è ø€ Ø—^‘^×-Ñ-Ó/×/Ð/Ð/ús   ‚' %¡'c               óH   K  — | j                   2 3 d {  –—† }|­–— Œ7 Œ
6 y ­wr&   r9   r:   s     r1   Ú	__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.   rS   s     r1   r?   zAsyncStream._iter_events¡   s:   è ø€ ØŸ™×2Ñ2°4·=±=×3LÑ3LÓ3NÔO÷ 	�#ØŒIð	øÑOùs%   ‚4A	¶AºA»A¾A	ÁAÁA	c               óê  K  — t        t        | j                  «      }| j                  }| j                  j
                  }| j                  «       }	 |2 3 d {  –—† }|j                  j                  d«      r �n¼|j                  rÛ|j                  j                  d«      rÀ|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œ||¬«      ­–— �Œ|j                  «       }t        |«      ry|j                  d«      rhd }|j                  d«      }t        |«      r|j                  d«      }|rt        |t        «      sd}t        || j                  j                   |d   ¬«      ‚ || j"                  �%| j"                  j$                  r||j                  dœn|||¬«      ­–— �Œã|j'                  «       ƒ d {  –—†  y 7 �Œø6 Œ7 Œ
# |j'                  «       ƒ d {  –—†7   w xY w­wrA   )r   r   r(   r   r)   rH   r?   rF   rI   rG   rJ   r   rK   rL   rM   r   rD   r    rN   ÚacloserP   s	            r1   r+   zAsyncStream.__stream__¥   s  è ø€ Ü”s˜DŸM™MÓ*ˆØ—=‘=ˆØ—|‘|×:Ñ:ˆØ×$Ñ$Ó&ˆð1	$Ù%÷ -�cØ—8‘8×&Ñ& xÔ0Úð —9’9 §¡×!5Ñ!5°iÔ!@ØŸ8™8›:�Dà—y‘y GÒ+´
¸4Ô0@ÀTÇXÁXÈgÔEVØ"&˜Ø $§¡¨Ó 1˜Ü% eÔ,Ø&+§i¡i°	Ó&:˜GÙ&¬j¸Ä#Ô.FØ&J˜Gä&Ø$+Ø$(§M¡M×$9Ñ$9Ø!% g¡ôð ñ '°TÀCÇIÁIÑ,NÐX_ÐjrÔsÕsàŸ8™8›:�DÜ! $Ô'¨D¯H©H°WÔ,=Ø"&˜Ø $§¡¨Ó 1˜Ü% eÔ,Ø&+§i¡i°	Ó&:˜GÙ&¬j¸Ä#Ô.FØ&J˜Gä&Ø$+Ø$(§M¡M×$9Ñ$9Ø!% g¡ôð ñ 'àŸ=™=Ð4¸¿¹×9`Ò9`ð '+°S·Y±YÒ?à!Ø 'Ø!)ôõ ð —/‘/Ó#×#Ñ#ða-ù˜Xøð` $ù�(—/‘/Ó#×#Ò#üsa   ‚AI3ÁI ÁIÁIÁIÁGI È5I3ÉIÉ	I3ÉIÉI ÉI3ÉI0É)I,É*I0É0I3c              ƒ  ó   K  — | S ­wr&   rU   r7   s    r1   Ú
__aenter__zAsyncStream.__aenter__Þ   s   è ø€ Øˆùs   ‚c              ƒ  ó@   K  — | j                  «       ƒ d {  –—†  y 7 Œ­wr&   rX   rY   s       r1   Ú	__aexit__zAsyncStream.__aexit__á   s   è ø€ ð �j‰j‹l×Òús   ‚–—c              ƒ  óT   K  — | j                   j                  «       ƒ d{  –—†  y7 Œ­wr_   )r   rw   r7   s    r1   rO   zAsyncStream.closeé   s   è ø€ ð �m‰m×"Ñ"Ó$×$Ò$ús   ‚( &¡()
r/   r`   r   r   r0   r   r$   r   ra   rb   rc   )ra   zAsyncIterator[_T])ra   úAsyncIterator[ServerSentEvent]re   rf   rg   )rh   ri   rj   rk   rl   r    r2   rq   rs   r?   r+   ry   r{   rO   rU   r4   r1   rn   rn   „   s¢   … ÙVàÓØ.2€HÐ+Ó2Ø*Ó*ð 26ñ+ð ð+ð !ð	+ð
 ð+ð /ð+ð 
ó+ó0óóó7$órðà,ðð "ðð %ð	ð
 
óô%r4   rn   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©rG   rF   ÚidÚretryc               óL   — |€d}|| _         || _        |xs d | _        || _        y )NÚ )Ú_idÚ_dataÚ_eventÚ_retry)r.   rG   rF   r�   r‚   s        r1   r2   zServerSentEvent.__init__ó   s.   € ð ˆ<ØˆDàˆŒØˆŒ
Ø’m˜tˆŒØˆ�r4   c                ó   — | j                   S r&   )r‡   r7   s    r1   rG   zServerSentEvent.event  ó   € à�{‰{Ðr4   c                ó   — | j                   S r&   )r…   r7   s    r1   r�   zServerSentEvent.id  s   € à�x‰xˆr4   c                ó   — | j                   S r&   )rˆ   r7   s    r1   r‚   zServerSentEvent.retry  rŠ   r4   c                ó   — | j                   S r&   )r†   r7   s    r1   rF   zServerSentEvent.data  s   € à�z‰zÐr4   c                ó@   — t        j                  | j                  «      S r&   )rJ   ÚloadsrF   r7   s    r1   rJ   zServerSentEvent.json  s   € Ü�z‰z˜$Ÿ)™)Ó$Ð$r4   c           	     óp   — d| j                   › d| j                  › d| j                  › d| j                  › d�	S )NzServerSentEvent(event=z, data=z, id=z, retry=Ú)r€   r7   s    r1   Ú__repr__zServerSentEvent.__repr__  s9   € à'¨¯
©
 |°7¸4¿9¹9¸+ÀUÈ4Ï7É7È)ÐS[Ð\`×\fÑ\fÐ[gÐghÐiÐir4   )
rG   ú
str | NonerF   r“   r�   r“   r‚   ú
int | Nonera   rb   )ra   r“   )ra   r”   )ra   rM   )ra   r   )rh   ri   rj   r2   ÚpropertyrG   r�   r‚   rF   rJ   r   r’   rU   r4   r1   r   r   ò   s²   „ ð !ØØØ ñð ðð ð	ð
 ðð ðð 
óð  òó ðð òó ðð òó ðð òó ðó%ð òjó ñjr4   r   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ˆ   r7   s    r1   r2   zSSEDecoder.__init__!  s   € ØˆŒØˆŒ
Ø"ˆÔØˆ�r4   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.   rR   ÚchunkÚraw_lineÚlinerS   s         r1   r>   zSSEDecoder.iter_bytes'  sR   è ø€ à×&Ñ& xÖ0ˆEà!×,Ñ,Ö.�Ø—‘ wÓ/�Ø—k‘k $Ó'�ÚØ“Iñ	 /ñ 1ù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 chunksr4   T©Úkeepends©s   s   

s   

N©rž   Úendswith©r.   rR   rF   r¡   r£   s        r1   r�   zSSEDecoder._iter_chunks1  s\   è ø€ àˆÛˆEØ×(Ñ(°$Ð(Ö7�Ø˜‘�Ø—=‘=Ð!@ÕAØ’JØ‘Dñ	 8ð ñ Ø‹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         r1   ru   zSSEDecoder.aiter_bytes=  s[   è ø€ à×-Ñ-¨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¥   r4   NTr¦   r¨   r©   r«   s        r1   r­   zSSEDecoder._aiter_chunksG  sd   è ø€ àˆÙ#÷ 	�%Ø×(Ñ(°$Ð(Ö7�Ø˜‘�Ø—=‘=Ð!@ÕAØ“JØ‘Dñ	 8ð	ø˜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   rG   rF   r�   Ú r‚   )r‡   r†   r˜   rˆ   r   ÚjoinrI   Ú	partitionÚappendÚintÚ	TypeErrorÚ
ValueError)r.   r£   rS   Ú	fieldnameÚ_Úvalues         r1   rŸ   zSSEDecoder.decodeS  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:Nrg   ©rR   úIterator[bytes]ra   rd   )rR   r¾   ra   r¾   ©rR   úAsyncIterator[bytes]ra   r}   )rR   rÀ   ra   rÀ   )r£   rM   ra   zServerSentEvent | None)
rh   ri   rj   rl   r2   r>   r�   ru   r­   rŸ   rU   r4   r1   r—   r—     s8   … ØÓØÓØÓØÓóóó
óó
ô.r4   r—   c                  ó   — e Zd Zdd„Zdd„Zy)r!   c                 ó   — y)r›   NrU   ©r.   rR   s     r1   r>   zSSEBytesDecoder.iter_bytes†  ó   € àr4   c                 ó   — y)zdGiven an async iterator that yields raw binary data, iterate over it & yield every event encounteredNrU   rÃ   s     r1   ru   zSSEBytesDecoder.aiter_bytesŠ  rÄ   r4   Nr½   r¿   )rh   ri   rj   r>   ru   rU   r4   r1   r!   r!   „  s   „ óôr4   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   rn   )ÚtypÚorigins     r1   Úis_stream_class_typerÌ   �  s0   € ä˜‹_Ò# €FÜ�?‰?˜6Ó"ÒP¤z°&¼6Ä;Ð:OÓ'PÐPr4   )Ú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   rn   r   ztuple[type, ...])ÚindexÚgeneric_basesrÍ   )Ú_base_clientr   rn   r   r   )Ú
stream_clsrÍ   r   rn   s       r1   Úextract_stream_chunk_typerÓ   •  s-   € ÷ 2ä%ØØÜÐ-°¸Ð/DÓEØ'ô	ð r4   )rÊ   Útypera   z;TypeGuard[type[Stream[object]] | type[AsyncStream[object]]])rÒ   rÔ   rÍ   r“   ra   rÔ   ))Ú
__future__r   rJ   rÇ   Útypesr   Útypingr   r   r   r   r	   r
   r   r   Útyping_extensionsr   r   r   r   r   r   ÚhttpxÚ_utilsr   r   Ú_exceptionsr   r)   r   r   Ú_modelsr   r   r   rn   r   r—   r!   rÌ   rÓ   rU   r4   r1   Ú<module>rÝ      sÄ   ðå "ã Û Ý ß `× `Ó `ß `× `ã ç :Ý !áß,Ý,ñ ˆTƒ]€ôjˆW�R‰[ô jôZk%�'˜"‘+ô k%÷\&jñ &j÷Rfñ fðR ô�hó ó ðóQð #'ñØðð  ðð 
ô	r4   