
    AHjk                        d Z ddl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Zddlm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d
lmZ ddlmZmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z)m*Z*m+Z+m,Z, ddl-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z:  e#       Z; e       Z< e%d      Z= e       Z> e!       Z?	 d=de.de	e@ef   de@deAdeAf
dZBe7	 	 	 	 	 d>de
d   de
d   d e@de
d!   d"ee	e@e@f      d#ee	e@e@f      d$ee	e@e@f      d%ee	e@ef      de3fd&       ZCe7	 	 	 	 	 d>de
d   de
d   d e@de
d!   d"ee	e@e@f      d#ee	e@e@f      d$ee	e@e@f      d%ee	e@ef      dee3eeee3f   f   fd'       ZDe7	 	 	 	 d?d(e@de
d)   d"ee	e@e@f      d#ee	e@e@f      d$ee	e@e@f      de3fd*       ZE	 	 d@d(e@de.d+eeAej                  f   d,eGd-e,d.eHde
d)   d/ee   fd0ZIe7	 	 	 	 d?d(e@de
d)   d"ee	e@e@f      d#ee	e@e@f      d$ee	e@e@f      dee3eeee3f   f   fd1       ZJe7	 	 	 	 	 	 dAd2ee@   d3eeK   de2d"ee	e@e@f      d#ee	e@e@f      d$ee	e@e@f      fd4       ZLe7	 	 	 	 	 dBd2ee@   d3eeK   de2d#ee	e@e@f      d$ee	e@e@f      f
d5       ZM	 	 	 	 	 dCd(e@d6ee@   de
d7   d"ee	e@e@f      d#ee	e@e@f      d$ee	e@e@f      de3fd8ZN	 	 	 	 	 dCd(e@d6ee@   dee
d7   e@f   d"ee	e@e@f      d#ee	e@e@f      d$ee	e@e@f      dee3eeee3f   f   fd9ZO	 dDd(e@d:e@dd;fd<ZPy)Ez
Main File for Batches API implementation

https://platform.openai.com/docs/api-reference/batch

- create_batch()
- retrieve_batch()
- cancel_batch()
- list_batch()

    N)partial)Any	CoroutineDictLiteralOptionalUnioncast)BatchRequestCounts)verbose_logger)Logging)AnthropicBatchesHandler)AzureBatchesAPI)BedrockBatchesHandler)AsyncHTTPHandlerHTTPHandler)BaseLLMHTTPHandler)OpenAIBatchesAPI)VertexAIBatchPrediction)get_secret_str)CancelBatchRequestCreateBatchRequestFileExpiresAfterRetrieveBatchRequest)GenericLiteLLMParams) LIST_BATCHES_SUPPORTED_PROVIDERS+OPENAI_COMPATIBLE_BATCH_AND_FILES_PROVIDERSListBatchesSupportedProviderLiteLLMBatchLlmProviders)ProviderConfigManagerclientget_litellm_paramsget_llm_providersupports_httpx_timeout )gcs_bucket_nameoptional_paramskwargscustom_llm_providerdefault_timeoutreturnc                 0   | j                   xs |j                  d|      xs |}t        |t        j                        rAt        |      du r|j                  xs |}t        |      S t        |j                  xs |      S |t        |      S t        |      S )a  
    Resolve timeout value from various sources and handle httpx.Timeout objects.

    Args:
        optional_params: GenericLiteLLMParams object containing timeout
        kwargs: Additional kwargs that may contain request_timeout
        custom_llm_provider: Provider name for httpx timeout support check
        default_timeout: Default timeout value to use

    Returns:
        Resolved timeout as float
    request_timeoutF)timeoutget
isinstancehttpxTimeoutr%   readfloat)r(   r)   r*   r+   r/   read_timeouts         L/root/tools/cai/cai_env/lib/python3.12/site-packages/litellm/batches/main.py_resolve_timeoutr8   @   s    & 	 	::'9	  '5==)!"56%?"<<:?L&& 899 _%% >    completion_window24hendpoint)z/v1/chat/completions/v1/embeddingsz/v1/completionsinput_file_id)openaiazure	vertex_aibedrockhosted_vllmmetadataextra_headers
extra_bodyoutput_expires_afterc                 n  K   	 t        j                         }	d|d<   t        t        | |||||||f	i |}
t	        j
                         }t        |j                  |
      }|	j                  d|       d{   }t        j                  |      r| d{   }|S |}|S 7 )7 # t        $ r}|d}~ww xY ww)z
    Async: Creates and executes a batch from an uploaded file of request

    LiteLLM Equivalent of POST: https://api.openai.com/v1/batches
    Tacreate_batchN)
asyncioget_event_loopr   create_batchcontextvarscopy_contextrunrun_in_executoriscoroutine	Exception)r:   r<   r>   r*   rD   rE   rF   rG   r)   loopfuncctxfunc_with_contextinit_responseresponsees                   r7   rI   rI   k   s     &%%'"&  
 
 &&(#CGGT2"2249JKK}-**H  %H L +
  sY   B5A0B" 4B5B" B B" B5B" B5B"  B" "	B2+B--B22B5c                 
   	 t        d1i |}	|j                  dd      }
|j                  dd      }|j                  dd      }|j                  dd      }	 |t        |d      \  }}}}|j                  dd	      d
u }t        t        d1i |      }t        t        |j                  dd            }t        |	||      }|j                  ||d|	j                         |
||di d|	j                  d
      |       t        | |||||      }|t        t        |      |d<   |!t!        j"                  |t%        |            }nd}|`t&        j)                  ||||xs i |	j*                  |	j,                  ||t.         t1        t.        t2        t4        f      rt.        nd||      }|S d}|t6        v r|	j*                  xsB t8        j*                  xs0 t;        j<                  d      xs t;        j<                  d      xs d}|	j>                  xs, t8        j>                  xs t;        j<                  dd      xs d}|	j,                  xs9 t8        j,                  xs' t8        j@                  xs t;        j<                  d      }tB        j)                  ||||||	jD                  |      }|S |dk(  r|	j*                  xs t8        j*                  xs tG        d      }|	jH                  xs t8        jH                  xs tG        d      }|	j,                  xs< t8        j,                  xs* t8        jJ                  xs tG        d      xs tG        d      }|	j                  di       }||j                  dd       ntG        d        tL        j)                  ||||||	jD                  ||!      }|S |d"k(  r|	j*                  xs d#}|	jN                  xs t8        jN                  xs tG        d$      }|	jP                  xs t8        jP                  xs tG        d%      }|	jR                  xs tG        d&      }tT        j)                  |||||||	jD                  |'      }|S t8        jV                  jY                  d(j[                  |      d)|t]        j^                  d*d+t]        j`                  d,d-.      /      0      # t        $ r,}t	        j
                  dt        |              Y d}~|d}~ww xY w# t        $ r}|d}~ww xY w)2z
    Creates and executes a batch from an uploaded file of request

    LiteLLM Equivalent of POST: https://api.openai.com/v1/batches
    litellm_call_idNproxy_server_request
model_infomodelr^   r*   zPlitellm.batches.main.py::create_batch() - Error inferring custom_llm_provider - rI   FTlitellm_logging_obj)r[   r\   r]   preset_cache_keystream_response)exclude_unsetr)   r^   userr(   litellm_paramsr*   )r:   r<   r>   rD   rE   rF   rG   r^   provider)provider_configrf   create_batch_dataheadersapi_baseapi_keylogging_obj	_is_asyncr"   r/   r^   OPENAI_BASE_URLOPENAI_API_BASEhttps://api.openai.com/v1OPENAI_ORGANIZATIONOPENAI_API_KEY)rl   rm   organizationrj   r/   max_retriesro   r@   AZURE_API_BASEAZURE_API_VERSIONAZURE_OPENAI_API_KEYAZURE_API_KEYrF   azure_ad_tokenAZURE_AD_TOKEN)ro   rl   rm   api_versionr/   rv   rj   rf   rA   r&   VERTEXAI_PROJECTVERTEXAI_LOCATIONVERTEXAI_CREDENTIALS)ro   rl   vertex_projectvertex_locationvertex_credentialsr/   rv   rj   zALiteLLM doesn't support custom_llm_provider={} for 'create_batch'n/a  Unsupported providerrL   "https://github.com/BerriAI/litellmmethodurlstatus_codecontentrequestmessager^   llm_providerrX    )1r   r0   r$   rR   r   	exceptionstrpopdictr
   LiteLLMLoggingObjr8   update_from_kwargs
model_dumpr   r   r!   get_provider_batches_configr    base_llm_http_handlerrL   rl   rm   r"   r1   r   r   r   litellmosgetenvru   
openai_keyopenai_batches_instancerv   r   r}   	azure_keyazure_batches_instancer   r   r   vertex_ai_batches_instance
exceptionsBadRequestErrorformatr2   ResponseRequest)r:   r<   r>   r*   rD   rE   rF   rG   r)   r(   r[   r\   r]   r^   _rY   ro   rf   r`   r/   _create_batch_requestri   rX   rl   ru   rm   r}   vertex_ai_projectvertex_ai_locationr   s                                 r7   rL   rL      s   &}.88 **%6=%zz*@$GZZd3
%zz'48		 !1(,"q!Q JJ6$>	2<V<=15vzz*?F2
 #?F<OP..+668#2(<($(#% ",,4,@ !4 	/ 	
  !3/''!!
  +<@ "6=!"89 3OO%&9:O
 #O&,99 /-"7%+(11'///# )"6K9I+JK  ! : H$ O"&"MM  (( /##/99.// 99.// /   ,, ''992D9 	   '' /??/%%/ 99-.	  /;;!)"7+77# < Hh W !G+(( 4##4!"23   ++ 7&&7!"56   '' 3??3$$3 ""893 "/2  ),,\2>J%/6/0-::#!'+77"7- ; 	Hb O !K/&//52H.. 6))6!"45   // 7**7!"56 
 "1!C!C "~&H 2>>#!0 2#5+77"7 ? 	H.  $$44[bb' 0 #2!MMEij 5  G  	$$bcfghcibjk 	`  s_   AS. R6 *D>S. )DS. ,C?S. ,B,S. AS. 6	S+?!S& S. &S++S. .	S>7S99S>batch_id)r?   r@   rA   rB   rC   	anthropicc                 h  K   	 t        j                         }d|d<   t        t        | ||||fi |}t	        j
                         }t        |j                  |      }	|j                  d|	       d{   }
t        j                  |
      r|
 d{   }|S |
}|S 7 )7 # t        $ r}|d}~ww xY ww)zo
    Async: Retrieves a batch.

    LiteLLM Equivalent of GET https://api.openai.com/v1/batches/{batch_id}
    Taretrieve_batchN)
rJ   rK   r   retrieve_batchrM   rN   rO   rP   rQ   rR   )r   r*   rD   rE   rF   r)   rS   rT   rU   rV   rW   rX   rY   s                r7   r   r   r  s      %%'$( ! 
 
 &&(#CGGT2"2249JKK}-**H  %H L*
  Y   B2A-B 1B2B BB B2B B2B B 	B/(B**B//B2r/   rf   _retrieve_batch_requestro   rn   c                 `   d }|t         v r|j                  xsB t        j                  xs0 t        j                  d      xs t        j                  d      xs d}|j
                  xs, t        j
                  xs t        j                  dd       xs d }	|j                  xs9 t        j                  xs' t        j                  xs t        j                  d      }
t        j                  ||||
|	||j                        }|S |dk(  r|j                  xs t        j                  xs t        d      }|j                  xs t        j                  xs t        d	      }|j                  xs< t        j                  xs* t        j                  xs t        d
      xs t        d      }
|j                  di       }||j                  dd        nt        d       t         j                  |||
|||j                  ||      }|S |dk(  r|j                  xs d}|j"                  xs t        j"                  xs t        d      }|j$                  xs t        j$                  xs t        d      }|j&                  xs t        d      }t(        j                  || ||||||j                  |	      }|S |dk(  r|j                  xs* t        j                  xs t        d      xs t        d      }|j                  xs/ t        j                  xs t        j                  xs t        d      }
t*        j                  || ||
||j                        }|S t        j,                  j/                  dj1                  |      d|t3        j4                  ddt3        j6                  dd !      "      #      )$Nrp   rq   rr   rs   rt   )ro   retrieve_batch_datarl   rm   ru   r/   rv   r@   rw   rx   ry   rz   rF   r{   r|   )ro   rl   rm   r}   r/   rv   r   rf   rA   r&   r~   r   r   )	ro   r   rl   r   r   r   r/   rv   rn   r   ANTHROPIC_API_BASEANTHROPIC_BASE_URLANTHROPIC_API_KEY)ro   r   rl   rm   r/   rv   zJLiteLLM doesn't support {} for 'create_batch'. Only 'openai' is supported.r   r   r   create_threadr   r   r   r   )r   rl   r   r   r   ru   rm   r   r   r   rv   r   r}   r   r0   r   r   r   r   r   r   anthropic_batches_instancer   r   r   r2   r   r   )r   r(   r/   rf   r   ro   r*   rn   rl   ru   rm   rX   r}   rF   r   r   r   s                    r7   8_handle_retrieve_batch_providers_without_provider_configr     s	    #HII $$ ++yy*++ yy*++ + 	 (( ##yy.5 	 	 ## ++!!+ yy)*	 	 +99 7%'33 : 
V OE 
	'$$ 00./ 	 '' 3""312 	 ## //  / 45/ o. 	 %((r:
!NN+T2+,)88#'33 7) 9 	
P O} 
	+"++1r** 2%%201 	 ++ 3&&312 	
 -?? 
>"D
 .<<,.1'33# = 

\ OG 
	+$$ 44234 23	 	 ## 33  3 12	 	 .<<'33 = 
* O   00`gg# ,^^._Bfg 1 
 	
r9   c                    	 t        di |}|j                  dd      }|j                  xs |j                  dd      xs d}t        dd|i|}	|%|j	                  |dd|j                         |	|       |:t        |t        j                        r t        |      du r|j                  xs d}
|
}n,|&t        |t        j                        st        |      }n|d}t        | ||	      }|j                  d
d      du }|j                  dd      }| j                  d      rSd| v rOd| v rK|j                         }|j                  dd       t!        j"                  d| |j                  dd      |d|S |j                  dd      }|!t%        j&                  |t)        |            }nd}|rt*        j-                  | ||	|xs i |j.                  |j0                  |xs t3        |xs | dg dddd| z   d      ||t        |t4        t6        f      r|nd||      }|S t9        | |||	||||      S # t:        $ r}|d}~ww xY w)zh
    Retrieves a batch.

    LiteLLM Equivalent of GET https://api.openai.com/v1/batches/{batch_id}
    r`   Nr.   X  r*   rd   F     @r   rE   rF   r   Tr"   zarn:awsz	:bedrock:z:async-invoke/aws_region_namez	us-east-1)r   r   rn   r^   rg   z/unknownbatch_retrievebatch_retrieve_)r^   messagesstream	call_type
start_timer[   function_id)r   ri   rf   rk   rl   rm   rn   ro   r"   r/   r^   )r   r*   r(   rf   r   ro   r/   rn   r   )r   r0   r/   r#   r   r   r1   r2   r3   r%   r4   r5   r   r   
startswithcopyr   _handle_async_invoke_statusr!   r   r    r   r   rl   rm   r   r   r   r   rR   )r   r*   rD   rE   rF   r)   r(   r`   r/   rf   r6   r   ro   r"   async_kwargsr^   ri   rX   rY   s                      r7   r   r   0  s    t.88;A::!4<
 "))VVZZ8I3-OVSV+ 
 3

 *22 / : : <-$7 3  7EMM2&':;uD"<<.3L"G GU]])KGnG_G"6'!#
 JJ0%8D@	Hd+
 	*x' H, ";;=L.5(DD ! &

+<k J/ 	   &zz'483OO%&9:O
 #O&,;;! /-%+(11'/// 	$C&9%:(#C .#$5$@ 0 $ )"6K9I+JK  3 < H6 O
 H 3+)$;+	
 		
  s%   E4H5 7B*H5 "H5 5	I>I  Iafterlimitc                 h  K   	 t        j                         }d|d<   t        t        | ||||fi |}t	        j
                         }	t        |	j                  |      }
|j                  d|
       d{   }t        j                  |      r| d{   }|S |}|S 7 )7 # t        $ r}|d}~ww xY ww)z2
    Async: List your organization's batches.
    Talist_batchesN)
rJ   rK   r   list_batchesrM   rN   rO   rP   rQ   rR   )r   r   r*   rD   rE   rF   r)   rS   rT   rU   rV   rW   rX   rY   s                 r7   r   r     s     %%'"& 
 
 &&(#CGGT2"2249JKK}-**H  %H L*
  r   c                    	 t        d(i |}t        d(d|i|}|j                  xs9 t        j                  xs' t        j                  xs t        j                  d      }|j                  xs |j                  dd      xs d}	|	:t        |	t        j                        r t        |      du r|	j                  xs d}
|
}	n,|	&t        |	t        j                        st        |	      }	n|	d}	|j                  dd      d	u }|t         v r|j"                  xsB t        j"                  xs0 t        j                  d
      xs t        j                  d      xs d}|j$                  xs, t        j$                  xs t        j                  dd      xs d}t&        j)                  || |||||	|j*                        }|S |dk(  r|j"                  xs t        j"                  xs t-        d      }|j.                  xs t        j.                  xs t-        d      }|j                  xs< t        j                  xs* t        j0                  xs t-        d      xs t-        d      }|j                  di       }||j                  dd       nt-        d       t2        j)                  |||||	|j*                  |      }|S |dk(  r|j"                  xs d}|j4                  xs t        j4                  xs t-        d      }|j6                  xs t        j6                  xs t-        d      }|j8                  xs t-        d      }t:        j)                  || ||||||	|j*                  	      }|S t        j<                  j?                  djA                  |djC                  tE        tF                          d |t        jH                  d!d"t        jJ                  d#d$%      &      '      # tL        $ r}|d}~ww xY w))z>
    Lists batches

    List your organization's batches.
    r*   rt   r.   r   NFr   r   Trp   rq   rr   rs   )ro   r   r   rl   rm   ru   r/   rv   r@   rw   rx   ry   rz   rF   r{   r|   )ro   rl   rm   r}   r/   rv   rf   rA   r&   r~   r   r   )	ro   r   r   rl   r   r   r   r/   rv   zELiteLLM doesn't support {} for 'list_batch'. Supported providers: {}.z, r   r   r   r   r   r   r   r   r   )'r   r#   rm   r   r   r   r   r/   r0   r1   r2   r3   r%   r4   r5   r   r   rl   ru   r   r   rv   r   r}   r   r   r   r   r   r   r   r   r   joinsortedr   r   r   rR   )r   r   r*   rE   rF   r)   r(   rf   rm   r/   r6   ro   rl   ru   rX   r}   r   r   r   rY   s                       r7   r   r     s-   B.88+ 
 3


 ## ++!!+ yy)*	 	 "))VVZZ8I3-OVSV 7EMM2&':;uD"<<.3L"G GU]])KGnG_GJJ6$>	"MM  (( /##/99.// 99.// /   ,, ''992D9 	  /;;#!)+77 < 	Hd Q !G+&//g73C3Cg~VfGgH++ 7&&7!"56   '' 3??3$$3 ""893 "/2  ),,\2>J%/6/0-::#!'+77- ; Hd S !K/&//52H.. 6))6!"45   // 7**7!"56 
 "1!C!C "~&H 2>>#!0 2#5+77 ? 
H2  $$44_ff'IIf%EFG 0 #2!MMFjk 5    s-   F9O# <C>O# ;B-O# )A:O# #	O3,O..O3r^   )r?   r@   rA   c           	        K   	 t        j                         }d|d<   |j                  dd      xs |}t        t        | |||||fi |}t        j                         }	t        |	j                  |      }
|j                  d|
       d{   }t        j                  |      r| d{   }|S |}|S 7 )7 # t        $ r}|d}~ww xY ww)zu
    Async: Cancels a batch.

    LiteLLM Equivalent of POST https://api.openai.com/v1/batches/{batch_id}/cancel
    Tacancel_batchr^   N)rJ   rK   r   r   cancel_batchrM   rN   rO   rP   rQ   rR   )r   r^   r*   rD   rE   rF   r)   rS   rT   rU   rV   rW   rX   rY   s                 r7   r   r   u  s     %%'"& 

7D)2U 	
 	
 &&(#CGGT2"2249JKK}-**H  %H L*
  sY   C	BB6 B2	B6 'B4(B6 -C	.B6 1C	2B6 4B6 6	C?CCC	c                 j   	 	 |t        ||      \  }}}}t        d)i |}	t        d)d|i|}
|	j                  xs |j                  dd      xs d}|:t        |t        j                        r t        |      du r|j                  xs d}|}n,|&t        |t        j                        st        |      }n|d}t        | ||	      }|j!                  d
d      du }d}|t"        v r|	j$                  xsB t&        j$                  xs0 t)        j*                  d      xs t)        j*                  d      xs d}|	j,                  xs, t&        j,                  xs t)        j*                  dd      xs d}|	j.                  xs9 t&        j.                  xs' t&        j0                  xs t)        j*                  d      }t2        j5                  |||||||	j6                        }|S |dk(  r|	j$                  xs t&        j$                  xs t9        d      }|	j:                  xs t&        j:                  xs t9        d      }|	j.                  xs< t&        j.                  xs* t&        j<                  xs t9        d      xs t9        d      }|	j                  di       }||j!                  dd       nt9        d       t>        j5                  ||||||	j6                  ||
      }|S |dk(  r|	j$                  xs d}|	j@                  xs t&        j@                  xs t9        d      }|	jB                  xs t&        jB                  xs t9        d      }|	jD                  xs t9        d      }tF        j5                  || ||||||	j6                        }|S t&        jH                  jK                  d jM                  |      d!|t        jN                  d"d#t        jP                  d$d%&      '      (      # t        $ r,}t        j                  dt	        |              Y d}~d}~ww xY w# t        $ r}|d}~ww xY w)*zn
    Cancels a batch.

    LiteLLM Equivalent of POST https://api.openai.com/v1/batches/{batch_id}/cancel
    Nr_   zPlitellm.batches.main.py::cancel_batch() - Error inferring custom_llm_provider - r*   r.   r   Fr   r   r   Trp   rq   rr   rs   rt   )ro   cancel_batch_datarl   rm   ru   r/   rv   r@   rw   rx   ry   rz   rF   r{   r|   )ro   rl   rm   r}   r/   rv   r   rf   rA   r~   r   r   )ro   r   rl   r   r   r   r/   rv   zeLiteLLM doesn't support {} for 'cancel_batch'. Only 'openai', 'azure', and 'vertex_ai' are supported.r   r   r   r   r   r   r   r   r   ))r$   rR   r   r   r   r   r#   r/   r0   r1   r2   r3   r%   r4   r5   r   r   r   rl   r   r   r   ru   rm   r   r   r   rv   r   r}   r   r   r   r   r   r   r   r   r   r   r   )r   r^   r*   rD   rE   rF   r)   r   rY   r(   rf   r/   r6   _cancel_batch_requestro   rl   ru   rm   rX   r}   r   r   r   s                          r7   r   r     s   S		 /?(;0,&1 /88+ 
 3


 "))VVZZ8I3-OVSV 7EMM2&':;uD"<<.3L"G GU]])KGnG_G 2'!!
 JJ6$>	"&"MM(( /##/99.// 99.// /   ,, ''992D9 	   '' /??/%%/ 99-.	  /;;#"7!)+77 < Hh W !G+(( 4##4!"23   ++ 7&&7!"56   '' 3??3$$3 ""893 "/2  ),,\2>J%/6/0-::#!'+77"7- ; 	Hb O !K/&//74H.. 6))6!"45   // 7**7!"56 
 "1!C!C "~&H 2>>#!!0 2#5+77 ? 	H.  $$44  G  G' 0 #2!MMEij 5  }  	$$bcfghcibjk 	V  sP   O* GP"  C?P"  B,P" AP" *	P3!PP" PP" "	P2+P--P2r   r   c                     	
 ddl 
ddlm  fd	ddl}	
fd}|j                  j                         5 }|j                  |      }|j                         cddd       S # 1 sw Y   yxY w)a  
    Handle async invoke status check for AWS Bedrock.

    Args:
        batch_id: The async invoke ARN
        aws_region_name: AWS region name
        **kwargs: Additional parameters

    Returns:
        dict: Status information including status, output_file_id (S3 URL), etc.
    r   N)BedrockEmbeddingc                  `  K           }  | j                   dd d {   }ddlm} ddlm} |j                  dd      }|j                         }ddd	d	d
}|j                  |d      }d}	 |d   d   d   }dd l	}	ddl
m}
  |
       j                  ||      \  }}}}}} ||d   d||xs t        |	j                               |||t        d|dk(  rdnd|dk(  rdnd      t        di ||j                  d      xs d|d   dddd      }|S 7 # t        t        f$ r Y w xY ww)N)invocation_arnr   rn   r   )BatchJobStatus)r   statusr&   	completedfailedin_progress)r   r   
inprogressr   outputDataConfigs3OutputDataConfigs3Uri)BedrockBatchesConfiginvocationArnbatch   )totalr   r   failureMessagemodelArn)output_file_idfailure_message	model_arnr;   r=   )idobjectr   
created_atin_progress_atcompleted_at	failed_atrequest_countsrD   r:   r<   r>   r   )_get_async_invoke_statuslitellm.types.llms.openair   litellm.types.utilsr   r0   lowerKeyError	TypeErrortime+litellm.llms.bedrock.batches.transformationr   _parse_timestamps_and_statusintr   r   )embedding_handlerstatus_responser   r   aws_status_rawaws_status_lowerstatus_mappingnormalized_statusoutput_s3_urir   r   r   r   r   r   r   resultr   r   r   r)   rn   s                    r7   _async_get_statusz6_handle_async_invoke_status.<locals>._async_get_statusY  s    ,. !K 1 J J !
#+#!
 	!
 
 	=4 ),,Xr:)//1 %'(	5
 -;,>,>h-

 	+,>?@TUM 	T !"??^
	
 /$!  499;)%-0K?!Q-9qq
  &3'6':':;K'L'RPR!0!< $%/
4 W
> )$ 		s5   !D.DAD.3D >BD.D+(D.*D++D.c                       j                          }  j                  |        	 | j                                | j                          S # | j                          w xY wN)new_event_loopset_event_looprun_until_completeclose)new_loopr
  rJ   s    r7   run_in_threadz2_handle_async_invoke_status.<locals>.run_in_thread  sO    )7))+x(	../@/BCNNHNNs   A A)rJ   $litellm.llms.bedrock.embed.embeddingr   concurrent.futuresfuturesThreadPoolExecutorsubmitr	  )r   r   rn   r)   
concurrentr  executorfuturer   r
  rJ   s   ````    @@@r7   r   r   G  sd     EP Ph  
			.	.	0 H/}}  s   !A**A3)r   )r?   NNNN)r?   NNN)r?   N)NNr?   NNN)NNr?   NN)Nr?   NNNr  )Q__doc__rJ   rM   r   	functoolsr   typingr   r   r   r   r   r	   r
   r2   openai.types.batchr   r   litellm._loggingr   *litellm.litellm_core_utils.litellm_loggingr   r   &litellm.llms.anthropic.batches.handlerr   "litellm.llms.azure.batches.handlerr   $litellm.llms.bedrock.batches.handlerr   &litellm.llms.custom_httpx.http_handlerr   r   *litellm.llms.custom_httpx.llm_http_handlerr   litellm.llms.openai.openair   &litellm.llms.vertex_ai.batches.handlerr   litellm.secret_managers.mainr   r   r   r   r   r   litellm.types.routerr   r   r   r   r   r   r    litellm.utilsr!   r"   r#   r$   r%   r   r   r   r   r   r   r5   r8   rI   rL   r   r3   r   boolr   r   r  r   r   r   r   r   r   r9   r7   <module>r,     s  
   	  G G G  1  + S J > F P I 7 J 7  6   +, (* 4RH 46 *,  #	()(cN( ( 	(
 (V  	)-.2+/590u~0QR0 0 !@	0 tCH~&0 DcN+0 c3h(0 #4S>20 0 0f  	)-.2+/59Ou~OQRO O !@	O tCH~&O DcN+O c3h(O #4S>2O <3\#9::;O Od 
 	)-.2+/(( M(
 tCH~&( DcN+( c3h(( ( (h 	!%OO)O 5%--'(O 	O
 2O O !MO #Od 
 	)-.2+/CC MC
 tCH~&C DcN+C c3h(C <3\#9::;C CL 8@)-.2+/'C='C=' 6' tCH~&	'
 DcN+' c3h(' 'T 8@.2+/OC=OC=O 6O DcN+	O
 c3h(O Oh  CK)-.2+/++C=+ !!?@+ tCH~&	+
 DcN++ c3h(+ +`  OW)-.2+/aaC=a w'EFKLa tCH~&	a
 DcN+a c3h(a <3\#9::;aJ 6:rr$'rrr9   