§
    ÒÁ³g.3  ã                  ó†  — 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%dS )!é    )Ú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                  óh   — 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dS )&ÚStreamzJProvides the core interface to iterate over a synchronous stream response.úhttpx.ResponseÚresponseÚSSEBytesDecoderÚ_decoderÚcast_toútype[_T]Úclientr   ÚreturnÚNonec               ó”   — || _         || _        || _        |                     ¦   «         | _        |                      ¦   «         | _        d S ©N©r   Ú_cast_toÚ_clientÚ_make_sse_decoderr   Ú
__stream__Ú	_iterator©Úselfr   r   r!   s       úO/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/openai/_streaming.pyÚ__init__zStream.__init__   óA   € ð !ˆŒØˆŒØˆŒØ×0Ò0Ñ2Ô2ˆŒØŸšÑ*Ô*ˆŒˆˆó    r   c                ó4   — | j                              ¦   «         S r%   )r+   Ú__next__©r-   s    r.   r3   zStream.__next__*   s   € ØŒ~×&Ò&Ñ(Ô(Ð(r1   úIterator[_T]c              #  ó&   K  — | j         D ]}|V — Œd S r%   ©r+   ©r-   Úitems     r.   Ú__iter__zStream.__iter__-   s,   è è € Ø”Nð 	ð 	ˆDØˆJˆJˆJˆJð	ð 	r1   úIterator[ServerSentEvent]c              #  óx   K  — | j                              | j                             ¦   «         ¦  «        E d {V —† d S r%   )r   Ú
iter_bytesr   r4   s    r.   Ú_iter_eventszStream._iter_events1   sB   è è € Ø”=×+Ò+¨D¬M×,DÒ,DÑ,FÔ,FÑGÔGÐGÐGÐGÐGÐGÐGÐGÐGÐGr1   c              #  ó  K  — t          t          | j        ¦  «        }| j        }| j        j        }|                      ¦   «         }|D �]·}|j                             d¦  «        r �n™|j	        €¿| 
                    ¦   «         }t          |¦  «        r‹|                     d¦  «        rvd }|                     d¦  «        }t          |¦  «        r|                     d¦  «        }|rt          |t          ¦  «        sd}t          || j        j        |d         ¬¦  «        ‚ ||||¬¦  «        V — Œæ| 
                    ¦   «         }|j	        dk    ršt          |¦  «        r‹|                     d¦  «        rvd }|                     d¦  «        }t          |¦  «        r|                     d¦  «        }|rt          |t          ¦  «        sd}t          || j        j        |d         ¬¦  «        ‚ |||j	        dœ||¬¦  «        V — �Œ¹|D ]}	Œd S ©Nz[DONE]ÚerrorÚmessagez"An error occurred during streaming)rB   ÚrequestÚbody)Údatar   r   )rE   Úevent©r   r   r'   r   r(   Ú_process_response_datar>   rE   Ú
startswithrF   Újsonr   ÚgetÚ
isinstanceÚstrr   rC   ©
r-   r   r   Úprocess_dataÚiteratorÚsserE   rB   rA   Ú_sses
             r.   r*   zStream.__stream__4   sG  è è € Ý•s˜DœMÑ*Ô*ˆØ”=ˆØ”|Ô:ˆØ×$Ò$Ñ&Ô&ˆàð '	pñ '	pˆCØŒx×"Ò" 8Ñ,Ô,ð Ø‘àŒyÐ Ø—x’x‘z”z�Ý˜dÑ#Ô#ð ¨¯ª°Ñ(9Ô(9ð Ø"�GØ ŸHšH WÑ-Ô-�EÝ! %Ñ(Ô(ð 7Ø"'§)¢)¨IÑ"6Ô"6˜Ø"ð G­*°W½cÑ*BÔ*Bð GØ"F˜å"Ø 'Ø $¤Ô 5Ø! 'œ]ðñ ô ð ð #�l¨°gÈÐQÑQÔQÐQÐQÐQÐQð —x’x‘z”z�à”9 Ò'Ð'­J°tÑ,<Ô,<Ð'ÀÇÂÈ'ÑARÔARÐ'Ø"�GØ ŸHšH WÑ-Ô-�EÝ! %Ñ(Ô(ð 7Ø"'§)¢)¨IÑ"6Ô"6˜Ø"ð G­*°W½cÑ*BÔ*Bð GØ"F˜å"Ø 'Ø $¤Ô 5Ø! 'œ]ðñ ô ð ð #�l°ÀÄ	Ð(JÐ(JÐT[ÐfnÐoÑoÔoÐoÐoÐoÑoð ð 	ð 	ˆDØð	ð 	r1   r   c                ó   — | S r%   © r4   s    r.   Ú	__enter__zStream.__enter__g   s   € Øˆr1   Úexc_typeútype[BaseException] | NoneÚexcúBaseException | NoneÚexc_tbúTracebackType | Nonec                ó.   — |                       ¦   «          d S r%   ©Úclose©r-   rV   rX   rZ   s       r.   Ú__exit__zStream.__exit__j   s   € ð 	�
Š
‰Œˆˆˆr1   c                ó8   — | j                              ¦   «          dS ©zŠ
        Close the response and release the connection.

        Automatically called if the response body is read to completion.
        N)r   r^   r4   s    r.   r^   zStream.closer   s   € ð 	Œ×ÒÑÔÐÐÐr1   N)r   r    r   r   r!   r   r"   r#   ©r"   r   )r"   r5   )r"   r;   ©r"   r   ©rV   rW   rX   rY   rZ   r[   r"   r#   ©r"   r#   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r/   r3   r:   r>   r*   rU   r`   r^   rT   r1   r.   r   r      sÙ   € € € € € € ØTÐTàÐÐÑàÐÐÑð+ð +ð +ð +ð)ð )ð )ð )ðð ð ð ðHð Hð Hð Hð1ð 1ð 1ð 1ðfð ð ð ðð ð ð ðð ð ð ð ð r1   r   c                  óh   — 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dS )&ÚAsyncStreamzLProvides the core interface to iterate over an asynchronous stream response.r   r   zSSEDecoder | SSEBytesDecoderr   r   r    r!   r   r"   r#   c               ó”   — || _         || _        || _        |                     ¦   «         | _        |                      ¦   «         | _        d S r%   r&   r,   s       r.   r/   zAsyncStream.__init__‚   r0   r1   r   c              ƒ  óD   K  — | j                              ¦   «         ƒ d {V —†S r%   )r+   Ú	__anext__r4   s    r.   rp   zAsyncStream.__anext__�   s,   è è € Ø”^×-Ò-Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r1   úAsyncIterator[_T]c               ó4   K  — | j         2 3 d {V —†}|W V — Œ6 d S r%   r7   r8   s     r.   Ú	__aiter__zAsyncStream.__aiter__’   sF   è è € Øœ.ð 	ð 	ð 	ð 	ð 	ð 	ð 	�$ØˆJˆJˆJˆJˆJð )˜.˜.s   ŠúAsyncIterator[ServerSentEvent]c               óˆ   K  — | j                              | j                             ¦   «         ¦  «        2 3 d {V —†}|W V — Œ6 d S r%   )r   Úaiter_bytesr   )r-   rQ   s     r.   r>   zAsyncStream._iter_events–   se   è è € Øœ×2Ò2°4´=×3LÒ3LÑ3NÔ3NÑOÔOð 	ð 	ð 	ð 	ð 	ð 	ð 	�#ØˆIˆIˆIˆIˆIð PÐOÐOs   ´Ac               ó&  K  — t          t          | j        ¦  «        }| j        }| j        j        }|                      ¦   «         }|2 3 d {V —†}|j                             d¦  «        r �nœ|j	        €À| 
                    ¦   «         }t          |¦  «        r‹|                     d¦  «        rvd }|                     d¦  «        }t          |¦  «        r|                     d¦  «        }|rt          |t          ¦  «        sd}t          || j        j        |d         ¬¦  «        ‚ ||||¬¦  «        W V — Œë| 
                    ¦   «         }|j	        dk    ršt          |¦  «        r‹|                     d¦  «        rvd }|                     d¦  «        }t          |¦  «        r|                     d¦  «        }|rt          |t          ¦  «        sd}t          || j        j        |d         ¬¦  «        ‚ |||j	        dœ||¬¦  «        W V — �Œ¿6 |2 3 d {V —†}	Œ6 d S r@   rG   rN   s
             r.   r*   zAsyncStream.__stream__š   sŠ  è è € Ý•s˜DœMÑ*Ô*ˆØ”=ˆØ”|Ô:ˆØ×$Ò$Ñ&Ô&ˆà!ð '	pð '	pð '	pð '	pð '	pð '	pð '	p�#ØŒx×"Ò" 8Ñ,Ô,ð Ø‘àŒyÐ Ø—x’x‘z”z�Ý˜dÑ#Ô#ð ¨¯ª°Ñ(9Ô(9ð Ø"�GØ ŸHšH WÑ-Ô-�EÝ! %Ñ(Ô(ð 7Ø"'§)¢)¨IÑ"6Ô"6˜Ø"ð G­*°W½cÑ*BÔ*Bð GØ"F˜å"Ø 'Ø $¤Ô 5Ø! 'œ]ðñ ô ð ð #�l¨°gÈÐQÑQÔQÐQÐQÐQÐQÐQð —x’x‘z”z�à”9 Ò'Ð'­J°tÑ,<Ô,<Ð'ÀÇÂÈ'ÑARÔARÐ'Ø"�GØ ŸHšH WÑ-Ô-�EÝ! %Ñ(Ô(ð 7Ø"'§)¢)¨IÑ"6Ô"6˜Ø"ð G­*°W½cÑ*BÔ*Bð GØ"F˜å"Ø 'Ø $¤Ô 5Ø! 'œ]ðñ ô ð ð #�l°ÀÄ	Ð(JÐ(JÐT[ÐfnÐoÑoÔoÐoÐoÐoÐoÑoðO "ðT #ð 	ð 	ð 	ð 	ð 	ð 	ð 	�$Øð #˜(˜(s   ÁHÈHr   c              ƒ  ó
   K  — | S r%   rT   r4   s    r.   Ú
__aenter__zAsyncStream.__aenter__Í   s   è è € Øˆr1   rV   rW   rX   rY   rZ   r[   c              ƒ  ó>   K  — |                       ¦   «         ƒ d {V —† d S r%   r]   r_   s       r.   Ú	__aexit__zAsyncStream.__aexit__Ð   s.   è è € ð �jŠj‰lŒlÐÐÐÐÐÐÐÐÐr1   c              ƒ  óH   K  — | j                              ¦   «         ƒ d{V —† dS rb   )r   Úacloser4   s    r.   r^   zAsyncStream.closeØ   s4   è è € ð Œm×"Ò"Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$r1   N)r   r    r   r   r!   r   r"   r#   rc   )r"   rq   )r"   rt   rd   re   rf   )rg   rh   ri   rj   rk   r/   rp   rs   r>   r*   ry   r{   r^   rT   r1   r.   rm   rm   {   sÕ   € € € € € € ØVÐVàÐÐÑà*Ð*Ð*Ñ*ð+ð +ð +ð +ð0ð 0ð 0ð 0ðð ð ð ðð ð ð ð1ð 1ð 1ð 1ðfð ð ð ðð ð ð ð%ð %ð %ð %ð %ð %r1   rm   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dS )ÚServerSentEventN©rF   rE   ÚidÚretryrF   ú
str | NonerE   r�   r‚   ú
int | Noner"   r#   c               óJ   — |€d}|| _         || _        |pd | _        || _        d S )NÚ )Ú_idÚ_dataÚ_eventÚ_retry)r-   rF   rE   r�   r‚   s        r.   r/   zServerSentEvent.__init__â   s2   € ð ˆ<ØˆDàˆŒØˆŒ
Ø�m˜tˆŒØˆŒˆˆr1   c                ó   — | j         S r%   )r‰   r4   s    r.   rF   zServerSentEvent.eventò   ó
   € àŒ{Ðr1   c                ó   — | j         S r%   )r‡   r4   s    r.   r�   zServerSentEvent.idö   s	   € àŒxˆr1   c                ó   — | j         S r%   )rŠ   r4   s    r.   r‚   zServerSentEvent.retryú   rŒ   r1   rM   c                ó   — | j         S r%   )rˆ   r4   s    r.   rE   zServerSentEvent.dataþ   s
   € àŒzÐr1   r   c                ó4   — t          j        | j        ¦  «        S r%   )rJ   ÚloadsrE   r4   s    r.   rJ   zServerSentEvent.json  s   € ÝŒz˜$œ)Ñ$Ô$Ð$r1   c           	     óH   — d| j         › d| j        › d| j        › d| j        › d�	S )NzServerSentEvent(event=z, data=z, id=z, retry=ú)r€   r4   s    r.   Ú__repr__zServerSentEvent.__repr__  s5   € ài¨¬
ÐiÐi¸4¼9ÐiÐiÈ4Ì7ÐiÐiÐ\`Ô\fÐiÐiÐiÐir1   )
rF   rƒ   rE   rƒ   r�   rƒ   r‚   r„   r"   r#   )r"   rƒ   )r"   r„   )r"   rM   )r"   r   )rg   rh   ri   r/   ÚpropertyrF   r�   r‚   rE   rJ   r   r”   rT   r1   r.   r   r   á   sú   € € € € € ð !ØØØ ðð ð ð ð ð ð  ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð%ð %ð %ð %ð ðjð jð jñ „Xðjð jð jr1   r   c                  óh   — 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	dS )Ú
SSEDecoderz	list[str]rˆ   rƒ   r‰   r„   rŠ   Ú_last_event_idr"   r#   c                ó>   — d | _         g | _        d | _        d | _        d S r%   )r‰   rˆ   r˜   rŠ   r4   s    r.   r/   zSSEDecoder.__init__  s#   € ØˆŒØˆŒ
Ø"ˆÔØˆŒˆˆr1   rP   úIterator[bytes]r;   c              #  óÈ   K  — |                       |¦  «        D ]I}|                     ¦   «         D ]2}|                     d¦  «        }|                      |¦  «        }|r|V — Œ3ŒJdS )ú^Given an iterator that yields raw binary data, iterate over it & yield every event encounteredúutf-8N)Ú_iter_chunksÚ
splitlinesÚdecode©r-   rP   ÚchunkÚraw_lineÚlinerQ   s         r.   r=   zSSEDecoder.iter_bytes  s�   è è € à×&Ò& xÑ0Ô0ð 	ð 	ˆEà!×,Ò,Ñ.Ô.ð ð �Ø—’ wÑ/Ô/�Ø—k’k $Ñ'Ô'�Øð Ø�I�I�Iøð	ð	ð 	r1   c              #  óš   K  — d}|D ];}|                      d¬¦  «        D ]"}||z  }|                     d¦  «        r|V — d}Œ#Œ<|r|V — dS dS )ú^Given an iterator that yields raw binary data, iterate over it and yield individual SSE chunksr1   T©Úkeepends©s   s   

s   

N©rŸ   Úendswith©r-   rP   rE   r¢   r¤   s        r.   rž   zSSEDecoder._iter_chunks   s�   è è € àˆØð 	ð 	ˆEØ×(Ò(°$Ð(Ñ7Ô7ð ð �Ø˜‘�Ø—=’=Ð!@ÑAÔAð Ø�J�J�JØ�Døð	ð
 ð 	ØˆJˆJˆJˆJˆJð	ð 	r1   úAsyncIterator[bytes]rt   c               óÖ   K  — |                       |¦  «        2 3 d{V —†}|                     ¦   «         D ]3}|                     d¦  «        }|                      |¦  «        }|r|W V — Œ4ŒP6 dS )rœ   Nr�   )Ú_aiter_chunksrŸ   r    r¡   s         r.   rv   zSSEDecoder.aiter_bytes,  s�   è è € à×-Ò-¨hÑ7Ô7ð 	ð 	ð 	ð 	ð 	ð 	ð 	�%à!×,Ò,Ñ.Ô.ð ð �Ø—’ wÑ/Ô/�Ø—k’k $Ñ'Ô'�Øð Ø�I�I�I�Iøð	ð 8Ð7Ð7s   ˜A(c               óª   K  — d}|2 3 d{V —†}|                      d¬¦  «        D ]#}||z  }|                     d¦  «        r|W V — d}Œ$ŒB6 |r|W V — dS dS )r¦   r1   NTr§   r©   rª   r¬   s        r.   r¯   zSSEDecoder._aiter_chunks6  s¯   è è € àˆØ#ð 	ð 	ð 	ð 	ð 	ð 	ð 	�%Ø×(Ò(°$Ð(Ñ7Ô7ð ð �Ø˜‘�Ø—=’=Ð!@ÑAÔAð Ø�J�J�J�JØ�Døð	ð $ð ð 	ØˆJˆJˆJˆJˆJˆJð	ð 	s   ‡A	r¤   rM   úServerSentEvent | Nonec                ór  — |so| j         s| j        s| j        s	| j        €d S t	          | j         d                     | j        ¦  «        | j        | j        ¬¦  «        }d | _         g | _        d | _        |S |                     d¦  «        rd S |                     d¦  «        \  }}}|                     d¦  «        r
|dd …         }|dk    r|| _         nh|dk    r| j                             |¦  «         nG|dk    rd	|v rn<|| _        n4|d
k    r-	 t          |¦  «        | _        n# t          t          f$ r Y nw xY w	 d S )Nú
r€   ú:ú r   rF   rE   r�   ú r‚   )r‰   rˆ   r˜   rŠ   r   ÚjoinrI   Ú	partitionÚappendÚintÚ	TypeErrorÚ
ValueError)r-   r¤   rQ   Ú	fieldnameÚ_Úvalues         r.   r    zSSEDecoder.decodeB  s„  € ð ð 	Ø”;ð  t¤zð ¸$Ô:Mð ÐRVÔR]ÐReØ�tå!Ø”kØ—Y’Y˜tœzÑ*Ô*ØÔ&Ø”kð	ñ ô ˆCð ˆDŒKØˆDŒJØˆDŒKàˆJà�?Š?˜3ÑÔð 	Ø�4à"Ÿnšn¨SÑ1Ô1Ñˆ	�1�eà×Ò˜CÑ Ô ð 	Ø˜!˜"˜"”IˆEà˜ÒÐØˆDŒKˆKØ˜&Ò Ð ØŒJ×Ò˜eÑ$Ô$Ð$Ð$Ø˜$ÒÐØ�uˆ}ˆ}Øà&+�Ô#Ð#Ø˜'Ò!Ð!ðÝ! %™jœj�”�øÝ�zÐ*ð ð ð Ø�ðøøøð àˆts   Ä
D ÄD3Ä2D3Nrf   ©rP   rš   r"   r;   )rP   rš   r"   rš   ©rP   r­   r"   rt   )rP   r­   r"   r­   )r¤   rM   r"   r±   )
rg   rh   ri   rk   r/   r=   rž   rv   r¯   r    rT   r1   r.   r—   r—   
  s¾   € € € € € € ØÐÐÑØÐÐÑØÐÐÑØÐÐÑðð ð ð ðð ð ð ð
ð 
ð 
ð 
ðð ð ð ð
ð 
ð 
ð 
ð.ð .ð .ð .ð .ð .r1   r—   c                  ó   — e Zd Zd
d„Zdd„Zd	S )r   rP   rš   r"   r;   c                ó   — dS )rœ   NrT   ©r-   rP   s     r.   r=   zSSEBytesDecoder.iter_bytesu  ó   € àˆr1   r­   rt   c                ó   — dS )zdGiven an async iterator that yields raw binary data, iterate over it & yield every event encounteredNrT   rÄ   s     r.   rv   zSSEBytesDecoder.aiter_bytesy  rÅ   r1   NrÀ   rÁ   )rg   rh   ri   r=   rv   rT   r1   r.   r   r   s  s<   € € € € € ðð ð ð ðð ð ð ð ð r1   r   ÚtypÚtyper"   ú;TypeGuard[type[Stream[object]] | type[AsyncStream[object]]]c                ó„   — t          | ¦  «        p| }t          j        |¦  «        ot          |t          t
          f¦  «        S )zaTypeGuard for determining whether or not the given type is a subclass of `Stream` / `AsyncStream`)r   ÚinspectÚisclassÚ
issubclassr   rm   )rÇ   Úorigins     r.   Úis_stream_class_typerÏ   ~  s6   € å˜‰_Œ_Ð# €FÝŒ?˜6Ñ"Ô"ÐP¥z°&½6Å;Ð:OÑ'PÔ'PÐPr1   )Úfailure_messageÚ
stream_clsrÐ   rƒ   c          	     óX   — 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   rm   r   ztuple[type, ...])ÚindexÚgeneric_basesrÐ   )Ú_base_clientr   rm   r   r   )rÑ   rÐ   r   rm   s       r.   Úextract_stream_chunk_typerÖ   „  sO   € ð 2Ð1Ð1Ð1Ð1Ð1Ð1Ð1å%ØØÝÐ-°¸Ð/DÑEÔEØ'ð	ñ ô ð r1   )rÇ   rÈ   r"   rÉ   )rÑ   rÈ   rÐ   rƒ   r"   rÈ   )&Ú
__future__r   rJ   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   rm   r   r—   r   rÏ   rÖ   rT   r1   r.   ú<module>rÞ      sO  ðà "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `à €€€à :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø !Ð !Ð !Ð !Ð !Ð !àð -Ø,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ð €WˆT�]„]€ðbð bð bð bð bˆW�RŒ[ñ bô bð bðJc%ð c%ð c%ð c%ð c%�'˜"”+ñ c%ô c%ð c%ðL&jð &jð &jð &jð &jñ &jô &jð &jðRfð fð fð fð fñ fô fð fðR ðð ð ð ð �hñ ô ñ ÔððQð Qð Qð Qð #'ðð ð ð ð ð ð ð r1   