Ë
    uPêj#  ã                   óÒ   — d dl Z d dlZd dlmZmZ d dlmZ d dlZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ d„ Z e j"                  d	¬
«      d„ «       Z G d„ de«      Z G d„ d«      Zy)é    N)ÚAsyncIteratorÚIterator)ÚFinal)Úverbose_logger)ÚBaseLLMException)ÚGenericStreamingChunk)ÚStreamingChatCompletionChunkc                  óÔ   — 	 ddl m}  ddlm}  | «       }|j	                  dd«      } ||«      j                  d«      S # t        $ r }t        j                  d|«       Y d }~y d }~ww xY w)Nr   )ÚLoader)ÚServiceModelzsagemaker-runtimez	service-2Ú&InvokeEndpointWithResponseStreamOutputu‚   litellm: could not load sagemaker-runtime response stream shape â€” SageMaker event-stream decoding will be unavailable. Error: %s)	Úbotocore.loadersr   Úbotocore.modelr   Úload_service_modelÚ	shape_forÚ	Exceptionr   Úwarning)r   r   ÚloaderÚservice_dictÚes        úh/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/sagemaker/common_utils.pyÚ%_load_sagemaker_response_stream_shaper      sj   € ðÝ+Ý/á›ˆØ$×7Ñ7Ð8KÈ[ÓYˆÙ˜LÓ)×3Ñ3Ð4\Ó]Ð]øÜò Ü×ÑðQàô	
ô
 ûðús   ‚;> ¾	A'ÁA"Á"A'é   )Úmaxsizec                  ó   — t        «       S )zÈ
    Lazily load and cache the sagemaker-runtime stream shape for the process.

    Avoids importing botocore (and logging warnings) unless SageMaker event-stream
    decoding is actually needed.
    )r   © ó    r   Ú#get_sagemaker_response_stream_shaper       s   € ô 1Ó2Ð2r   c                   óP   ‡ — e Zd Z	 ddededeej                  z  dz  fˆ fd„Zˆ xZ	S )ÚSagemakerErrorNÚstatus_codeÚmessageÚheadersc                 ó*   •— t         ‰| �  |||¬«       y )N)r!   r"   r#   )ÚsuperÚ__init__)Úselfr!   r"   r#   Ú	__class__s       €r   r&   zSagemakerError.__init__,   s   ø€ ô 	‰Ñ [¸'È7ÐÕSr   ©N)
Ú__name__Ú
__module__Ú__qualname__ÚintÚstrÚdictÚhttpxÚHeadersr&   Ú__classcell__)r(   s   @r   r    r    +   sA   ø„ ð
 04ñ	TàðTð ðTð ˜Ÿ™Ñ%¨Ñ,÷	Tñ Tr   r    c                   óª   — e Zd Zddededz  ddfd„Zdedefd„Zdede	fd„Z
d	ee   dee	ez  dz     fd
„Zd	ee   dee	ez  dz     fd„Zdedz  fd„Zy)ÚAWSEventStreamDecoderNÚmodelÚis_messages_apiÚreturnc                 óR   — ddl m} || _         |«       | _        g | _        || _        y )Nr   )ÚEventStreamJSONParser)Úbotocore.parsersr9   r5   ÚparserÚcontent_blocksr6   )r'   r5   r6   r9   s       r   r&   zAWSEventStreamDecoder.__init__6   s&   € Ý:àˆŒ
Ù+Ó-ˆŒØ$&ˆÔØ.ˆÕr   Ú
chunk_datac                 ó8   — t        di d| j                  i|¥¤Ž}|S )Nr5   r   )r	   r5   )r'   r=   Úopenai_chunks      r   Ú_chunk_parser_messages_apiz0AWSEventStreamDecoder._chunk_parser_messages_api>   s$   € Ü:Ña¸gÀtÇzÁzÐ=`ÐU_Ð=`ÑaˆàÐr   c                 óü   — t        j                  d|«       |j                  di «      xs i }|j                  dd «      xs d}d}d}|j                  dd«      }|dk(  rt        d|d	d
d ¬«      S t        ||||d ¬«      S )Nz(in sagemaker chunk parser, chunk_data %sÚtokenÚindexr   FÚ Útextz<|endoftext|>TÚstop)rE   rC   Úis_finishedÚfinish_reasonÚusage)r   ÚdebugÚgetÚGChunk)r'   r=   Ú_tokenÚ_indexrG   rH   Ú_texts          r   Ú_chunk_parserz#AWSEventStreamDecoder._chunk_parserC   s™   € Ü×ÑÐGÈÔTØ"Ÿ™ w°Ó3Ò9°rˆØ"Ÿ™ w°Ó5Ò:¸ˆØ"ˆØ!ˆà—z‘z &¨"Ó-ˆØ�OÒ#ÜØØØ Ø$Øôð ô ØØØ#Ø'Øô
ð 	
r   Úiteratorc              #   óÔ  K  — ddl m}  |«       }d}|D ]µ  }|j                  |«       |D ]�  }| j                  |«      }|sŒt        j
                  j                  |«      xs d}|j                  dd«      }||z  }	 t        j                  |«      }| j                  r| j                  |¬«      –— n| j                  |¬«      –— d}ŒŸ Œ· |rL	 t        j                  |«      }| j                  r| j                  |¬«      –— y| j                  |¬«      –— yy# t        j                  $ r Y �Œw xY w# t        j                  $ r t        j                  d|«       d–— Y yw xY w­w)zTGiven an iterator that yields lines, iterate over it & yield every event encounteredr   ©ÚEventStreamBufferrD   ú

©r=   ú+Warning: Unparseable JSON data remained: %sN)Úbotocore.eventstreamrT   Úadd_dataÚ_parse_message_from_eventÚlitellmÚCustomStreamWrapperÚ_strip_sse_data_from_chunkÚreplaceÚjsonÚloadsr6   r@   rP   ÚJSONDecodeErrorr   Úerror)	r'   rQ   rT   Úevent_stream_bufferÚaccumulated_jsonÚchunkÚeventr"   Ú_datas	            r   Ú
iter_bytesz AWSEventStreamDecoder.iter_bytes\   sq  è ø€ å:á%6Ó%8ÐØÐàò 	!ˆEØ×(Ñ(¨Ô/Ø,ò !�Ø×8Ñ8¸Ó?�Úä%×9Ñ9×TÑTÐU\Ó]ÒcÐac�GØ%Ÿo™o¨f°bÓ9�Gð %¨Ñ/Ð$ð
!Ü $§
¡
Ð+;Ó <˜Ø×/Ò/Ø"&×"AÑ"AÈUÐ"AÓ"SÓSà"&×"4Ñ"4ÀÐ"4Ó"FÒFà+-Ñ(ñ%!ð	!ñ4 ð	ÜŸ
™
Ð#3Ó4�Ø×'Ò'Ø×9Ñ9ÀUÐ9ÓKÓKà×,Ñ,¸Ð,Ó>Ó>ð øô  ×/Ñ/ò !â ð!ûô ×'Ñ'ò ä×$Ñ$Ð%RÐTdÔeØ”
ðüs`   ‚>E(Á:E(Á<ADÃE(Ã5D5 ÄE(ÄD5 ÄE(ÄD2Ä.E(Ä1D2Ä2E(Ä5-E%Å"E(Å$E%Å%E(c                ó  K  — ddl m}  |«       }d}|2 3 d{  –—† }|j                  |«       |D ]´  }	 | j                  |«      }|ržt	        j
                  d|«       t        j                  j                  |«      xs d}|j                  dd«      }||z  }t        j                  |«      }| j                  r| j                  |¬«      ­–— n| j                  |¬«      ­–— d}Œ¶ ŒÔ7 ŒÏ# t        j                  $ r Y ŒÏt         $ r }	t	        j"                  d|	«       Y d}	~	Œòd}	~	wt$        $ r!}	t	        j&                  d	|	«       Y d}	~	�Œd}	~	ww xY w6 |r©	 t        j                  |«      }| j                  r| j                  |¬«      ­–— y| j                  |¬«      ­–— y# t        j                  $ r t	        j&                  d
|«       d­–— Y yt$        $ r }	t	        j&                  d|	«       Y d}	~	yd}	~	ww xY wy­w)zZGiven an async iterator that yields lines, iterate over it & yield every event encounteredr   rS   rD   Nz sagemaker  parsed chunk bytes %srU   rV   z>UnicodeDecodeError: %s. Attempting to combine with next event.zAError parsing message: %s. Attempting to combine with next event.rW   z(Final error parsing accumulated JSON: %s)rX   rT   rY   rZ   r   rJ   r[   r\   r]   r^   r_   r`   r6   r@   rP   ra   ÚUnicodeDecodeErrorr   r   rb   )
r'   rQ   rT   rc   rd   re   rf   r"   rg   r   s
             r   Úaiter_bytesz!AWSEventStreamDecoder.aiter_bytes‰   sð  è ø€ õ 	;á%6Ó%8ÐØÐà#÷ 	ð 	�%Ø×(Ñ(¨Ô/Ø,ò �ðØ"×<Ñ<¸UÓC�GÙÜ&×,Ñ,Ð-OÐQXÔYä")×"=Ñ"=×"XÑ"XÐY`Ó"aÒ"gÐeg˜Ø")§/¡/°&¸"Ó"=˜ð )¨GÑ3Ð(ô !%§
¡
Ð+;Ó <˜Ø×/Ò/Ø"&×"AÑ"AÈUÐ"AÓ"SÔSà"&×"4Ñ"4ÀÐ"4Ó"FÓFà+-Ð(øñ'ð	ùô, ×+Ñ+ò áÜ)ò Ü"×*Ñ*Ð+kÐmnÔoÜûÜ ò Ü"×(Ñ(Ð)lÐnoÔpÝûðúð9 $ñB ðTÜŸ
™
Ð#3Ó4�Ø×'Ò'Ø×9Ñ9ÀUÐ9ÓKÔKà×,Ñ,¸Ð,Ó>Ô>øÜ×'Ñ'ò ä×$Ñ$Ð%RÐTdÔeØ•
Üò TÜ×$Ñ$Ð%OÐQR×SÑSûðTúð ùs©   ‚G?”E˜C(™EœG?´B1C*Ã%G?Ã(EÃ*EÃ=G?Ã?EÄD"ÄG?Ä"EÄ.E
ÅG?Å
EÅG?Å6F# ÆG?ÆF# Æ"G?Æ#.G;ÇG?ÇG;ÇG6Ç1G?Ç6G;Ç;G?c                 ón  — t        «       }|€t        dd¬«      ‚|j                  «       }| j                  j	                  ||«      }|d   dk7  rt        d|› �«      ‚d|v r3|j                  d«      }|sy |j                  d«      j                  «       S |j                  d	«      }|sy |j                  «       S )
Niô  zgSageMaker event-stream shape could not be loaded from botocore. Ensure botocore is correctly installed.)r!   r"   r!   éÈ   z!Bad response code, expected 200: re   ÚbytesÚbody)r   r    Úto_response_dictr;   ÚparseÚ
ValueErrorrK   Údecode)r'   rf   Úresponse_stream_shapeÚresponse_dictÚparsed_responsere   s         r   rZ   z/AWSEventStreamDecoder._parse_message_from_eventÁ   sÅ   € Ü'JÓ'LÐØ Ð(Ü Øð>ôð ð  %×5Ñ5Ó7ˆØ!%§¡×!2Ñ!2°=ÐBWÓ!Xˆà˜Ñ'¨3Ò.ÜÐ@ÀÀÐPÓQÐQà�oÑ%Ø#×'Ñ'¨Ó0ˆEÙØØ—9‘9˜WÓ%×,Ñ,Ó.Ð.à!×%Ñ% fÓ-ˆEÙØà—<‘<“>Ð!r   r)   )r*   r+   r,   r.   Úboolr&   r/   r	   r@   rL   rP   r   rn   rh   r   rk   rZ   r   r   r   r4   r4   5   s®   „ ñ/˜cð /°D¸4±Kð /È4ó /ð°Tð Ð>Zó ð

¨ð 
°ó 
ð2+ 8¨E¡?ð +°xÀÐIeÑ@eÐhlÑ@lÑ7mó +ðZ6TØ% eÑ,ð6Tà	�vÐ <Ñ<¸tÑCÑ	Dó6Tðp"°#¸±*ô "r   r4   )Ú	functoolsr_   Úcollections.abcr   r   Útypingr   r0   r[   r   Ú)litellm.llms.base_llm.chat.transformationr   Úlitellm.types.utilsr   rL   r	   r   Ú	lru_cacher   r    r4   r   r   r   ú<module>r~      sd   ðÛ Û ß 3Ý ã ã Ý "Ý FÝ ?Ý <òð" €×Ñ˜QÔñ3ó  ð3ôTÐ%ô T÷f"ò f"r   