
    ^h(                     ,   S SK r S SKrS SKrS SKJrJrJr  S SKrS SKJ	r	J
r
JrJr  S SKJr  S SKJrJr  SSKJr  SS	KJr  \" 5       rS
\S\
4S jrS
\S\	4S jr0 SS0 4S\S\S\S\S\S\S\S\\\4   4S jjrS\S\S\\   S\S\S
\S\\\4   4S jrg)    N)CallableListUnion)AsyncHTTPHandlerHTTPHandler_get_httpx_clientget_async_httpx_client)AllMessageValues)CustomStreamWrapperModelResponse   )ReplicateError   )ReplicateConfigheadershttp_clientc              #   p  #    SnSnSnUS;  a  [         R                  " S5        U" SU  35        UR                  XS9nUR                  S:X  a  UR	                  5       n	U	S   nSU	;   a6   SR                  U	S   5      nU[        U5      S  n
U" SU
 35        XS.v   UnU	S   nUS:X  a*  U	R                  SS5      n[        SSU 3UR                  S9eO!U" SUR                   UR                   35        US;  a  M  g g ! [         a(    [        S	S
R                  U	S   5      UR                  S9ef = f7fN )	succeededfailedcanceledg      ?zreplicate: polling endpoint: )r      statusoutputi  z Unable to parse response. Got={}status_codemessager   zNew chunk: )r   r   r   errori  zError: z8Replicate: Failed to fetch prediction status and output.)timesleepgetr   jsonjoin	Exceptionr   formatr   lentextprediction_url	api_tokenprint_verboser   r   previous_outputoutput_stringr   responseresponse_data
new_outputreplicate_errors               ]/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/replicate/chat/handler.py$handle_prediction_response_streamingr4      s     OMF"EE

35n5EFG??>?C3&$MMOM"8,F=(	$&GGM(,C$DM +3+?+AB
J<89!+>>"/"8,F!"/"3"3GR"@$ #%o%67$,,  " J8K_K_J`aianan`opA "EE ! ($' B I I)(3! !) 0 0 s%   A(D6+D ?A>D6?D62D33D6c                  #    SnSnSnUS;  Ga  [         R                  " S5      I S h  vN   U" SU  35        UR                  XS9I S h  vN nUR                  S:X  a  UR	                  5       n	U	S   nSU	;   a7   SR                  U	S   5      nU[        U5      S  n
U" SU
 35        XS.7v   UnU	S   nUS:X  a*  U	R                  SS5      n[        SSU 3UR                  S9eO!U" SUR                   UR                   35        US;  a  GM  g g  N N! [         a(    [        S	S
R                  U	S   5      UR                  S9ef = f7fr   )asyncior!   r"   r   r#   r$   r%   r   r&   r   r'   r(   r)   s               r3   *async_handle_prediction_response_streamingr7   D   s     OMF"EEmmC   5n5EFG$II3&$MMOM"8,F=(	$&GGM(,C$DM +3+?+AB
J<89!+>>"/"8,F!"/"3"3GR"@$ #%o%67$,,  " J8K_K_J`aianan`opA "EEE I ! ($' B I I)(3! !) 0 0 s@   'ED!ED/E<D A?EEE2E

Emodelmessagesapi_basemodel_responser,   optional_paramslitellm_paramsreturnc                    [         R                  UUU UUS9n[         R                  U 5      n[         R                  U UUUUS9nUb  USL a  [	        UU U	UUUUUUUUUUS9$ [        [        R                  " 5       5      Ul        [         R                  X 5      n[        SS0S9nUR                  UU[        R                  " U5      S9n[         R                  U5      nS	U;   a(  US	   SL a   U" S
5        [        UUUUUS9n[        UXSS9$ [!        ["        R$                  5       HT  n[        R&                  " S5        UR)                  UUS9n["        R*                  " 5       R-                  U UUUUUUUUU	S9
s  $    [/        SSS S9e)N)api_keyr   r8   r9   r<   )r8   r9   r<   r=   r   T)r;   r8   encodingr9   r<   r=   
version_id
input_datar@   r:   logging_objr,   r   timeout     @)paramsurlr   datastreamzstreaming requestr   r   	replicaterD   custom_llm_providerr   rI   r   
r8   raw_responser;   rD   r@   request_datar9   r<   r=   rA     9No response received from Replicate API after max retriesr   )replicate_configvalidate_environmentmodel_to_version_idtransform_requestasync_completionintr    createdget_complete_urlr   postr#   dumpsget_prediction_urlr4   r   rangelitellmDEFAULT_MAX_RETRIESr!   r"   r   transform_responser   )r8   r9   r:   r;   r,   r<   r=   rD   r@   rA   custom_prompt_dict	logger_fnacompletionr   rB   rC   r*   httpx_clientr/   	_response_s                        r3   
completionrk   u   s     33' 4 G "55e<J!33'% 4 J ;$#6)+)!!#'
 	
  !		N &66xGN %5!L   ZZ
# ! H &88BN ?"x'@D'H)*8$
	 #9ebmnnw223AJJ $''NG'LH**,??%-''! /-! @   4$ K     c                   #    [         R                  XS9n[        [        R                  R
                  SS0S9nUR                  X[        R                  " U5      S9I S h  vN n[         R                  U5      nSU;   a   US   SL a  [        UUUUUS9n[        UXS	S
9$ [        [        R                  5       Hq  n[        R                  " [        R                   5      I S h  vN   UR#                  XS9I S h  vN n[        R$                  " 5       R'                  UUU U
UUUUUUS9
s  $    [)        SSS S9e N NW NB7f)N)r:   r8   rE   rF   )llm_providerrG   rH   rK   TrL   rM   rN   rP   rQ   rT   rU   r   )rV   r]   r	   rb   LlmProviders	REPLICATEr^   r#   r_   r`   r7   r   ra   !DEFAULT_REPLICATE_POLLING_RETRIESr6   r!   'DEFAULT_REPLICATE_POLLING_DELAY_SECONDSr"   r   rd   r   )r;   r8   r9   rA   r<   r=   rB   rC   r@   r:   rD   r,   r   r*   async_handlerr/   ri   rj   s                     r3   rZ   rZ      sj      &666VN*))335!M #''$**Z2H (  H &88BN?"x'@D'H>%
	 #9ebmnn7<<=mm;;
 	
 	
 '**~*OO&&(;;!)##+) < 
 	
 >$ K C 	
 Ps7   AE !D:"BE $D<%E ;D><?E <E >E )r6   r#   r    typingr   r   r   rb   &litellm.llms.custom_httpx.http_handlerr   r   r   r	   litellm.types.llms.openair
   litellm.utilsr   r   common_utilsr   transformationr   rV   dictr4   r7   strlistrk   rZ    rl   r3   <module>r~      s4      ( (   7 < ) +"$ )7;)JU)Z- 	-
 "-x fff f "	f
 f f f =--.fR:!:: #$:
 : : : =--.:rl   