
    ^hN                        S r SSKrSSKrSSKrSSKJr  SSKJrJrJ	r	J
r
JrJr  SSKrSSKrSSKJr  SSKJr  SSKJr  SSKJr  SS	KJrJrJr  SS
KJr  SSKJr  \" 5       r\" 5       r \" SS9r!    S%S\
S   S\
S   S\"S\
S   S\\	\"\"4      S\\	\"\"4      S\\	\"\"4      S\4S jjr#    S%S\
S   S\
S   S\"S\
S   S\\	\"\"4      S\\	\"\"4      S\\	\"\"4      S\\\\\\4   4   4S jjr$    S%S\"S\
S   S\\	\"\"4      S\\	\"\"4      S\\	\"\"4      S\4S jjr%    S%S\"S\
S   S\\	\"\"4      S\\	\"\"4      S\\	\"\"4      S\\\\\\4   4   4S jjr&      S&S\\"   S \\'   S\
S   S\\	\"\"4      S\\	\"\"4      S\\	\"\"4      4S! jjr(     S'S\\"   S \\'   S\
S   S\\	\"\"4      S\\	\"\"4      4
S" jjr)S# r*S$ r+g)(z
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)AzureBatchesAPI)OpenAIBatchesAPI)VertexAIBatchPrediction)get_secret_str)BatchCreateBatchRequestRetrieveBatchRequest)GenericLiteLLMParams)supports_httpx_timeout )gcs_bucket_namecompletion_window24hendpoint)z/v1/chat/completionsz/v1/embeddingsz/v1/completionsinput_file_idcustom_llm_provider)openaiazure	vertex_aimetadataextra_headers
extra_bodyreturnc           
      ~  #     [         R                  " 5       nSUS'   [        [        U UUUUUU40 UD6n	[        R
                  " 5       n
[        U
R                  U	5      nUR                  SU5      I Sh  vN n[         R                  " U5      (       a  UI Sh  vN nU$ UnU$  N/ N! [         a  nUeSnAff = f7f)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   r   r   r   kwargsloopfuncctxfunc_with_contextinit_responseresponsees                  N/home/james-whalen/.local/lib/python3.13/site-packages/litellm/batches/main.pyr"   r"   %   s     %%'"& 

 

 &&(#CGGT2"2249JKK}--**H  %H L*
  sY   B=A1B) 5B%6$B) B'B)  B=!B) $B=%B) 'B) )
B:3B55B::B=c                     [        S'0 UD6nUR                  SS5      SL n	UR                  =(       d    UR                  SS5      =(       d    Sn
U
bE  [	        U
[
        R                  5      (       a&  [        U5      SL a  U
R                  =(       d    SnUn
O3U
b+  [	        U
[
        R                  5      (       d  [        U
5      n
OU
c  Sn
[        U UUUUUS9nSnUS	:X  Ga  UR                  =(       d6    [        R                  =(       d    [        R                  " S
5      =(       d    SnUR                  =(       d7    [        R                  =(       d     [        R                  " SS5      =(       d    SnUR                   =(       dD    [        R                   =(       d-    [        R"                  =(       d    [        R                  " S5      n[$        R'                  UUUUU
UR(                  U	S9nU$ US:X  Ga   UR                  =(       d"    [        R                  =(       d    [+        S5      nUR,                  =(       d"    [        R,                  =(       d    [+        S5      nUR                   =(       dK    [        R                   =(       d4    [        R.                  =(       d    [+        S5      =(       d    [+        S5      nUR                  S0 5      nUb  UR                  SS5        O[+        S5        [0        R'                  U	UUUU
UR(                  US9nU$ US:X  a  UR                  =(       d    SnUR2                  =(       d"    [        R2                  =(       d    [+        S5      nUR4                  =(       d"    [        R4                  =(       d    [+        S5      nUR6                  =(       d    [+        S5      n[8        R'                  U	UUUUU
UR(                  US9nU$ [        R:                  R=                  SR?                  U5      SU[
        R@                  " S S![
        RB                  " S"S#S$9S%9S&9e! [D         a  nUeSnAff = f)(z~
Creates and executes a batch from an uploaded file of request

LiteLLM Equivalent of POST: https://api.openai.com/v1/batches
r"   FTrequest_timeoutX  N     @)r   r   r   r   r   r   r   OPENAI_API_BASEhttps://api.openai.com/v1OPENAI_ORGANIZATIONOPENAI_API_KEY)api_baseapi_keyorganizationcreate_batch_datatimeoutmax_retries	_is_asyncr   AZURE_API_BASEAZURE_API_VERSIONAZURE_OPENAI_API_KEYAZURE_API_KEYr   azure_ad_tokenAZURE_AD_TOKEN)rC   r=   r>   api_versionrA   rB   r@   r   r   VERTEXAI_PROJECTVERTEXAI_LOCATIONVERTEXAI_CREDENTIALS)rC   r=   vertex_projectvertex_locationvertex_credentialsrA   rB   r@   JLiteLLM doesn't support {} for 'create_batch'. Only 'openai' is supported.n/a  Unsupported providercreate_thread"https://github.com/BerriAI/litellmmethodurlstatus_codecontentrequestmessagemodelllm_providerr2    )#r   poprA   get
isinstancehttpxTimeoutr   readfloatr   r=   litellmosgetenvr?   r>   
openai_keyopenai_batches_instancer%   rB   r   rJ   	azure_keyazure_batches_instancerN   rO   rP   vertex_ai_batches_instance
exceptionsBadRequestErrorformatResponseRequestr+   )r   r   r   r   r   r   r   r,   optional_paramsrC   rA   read_timeout_create_batch_requestr=   r?   r>   r2   rJ   vertex_ai_projectvertex_ai_locationrP   r3   s                         r4   r%   r%   S   s   H.88JJ6$>	!))VVZZ8I3-OVSV 7EMM22&':;uD"<<.3L"G GU]])K)KGnG_G 2/''!!
 #'(*  (( /##/99.// /	   ,, ''992D9 	   '' /??/%%/ 99-.	  /;;!)"7+77# < Hf U !G+(( 4##4!"23   ++ 7&&7!"56   '' 3??3$$3 ""893 "/2  ),,\2>J%/6/0-::#!'+77"7 ; H` 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dkk' 0 #2!MMFjk 5    s-   G-P6 0D&P6 CP6  AP6 6
Q QQbatch_id)r   r   c                 z  #     [         R                  " 5       nSUS'   [        [        U UUUU40 UD6n[        R
                  " 5       n[        UR                  U5      n	UR                  SU	5      I Sh  vN n
[         R                  " U
5      (       a  U
I Sh  vN nU$ U
nU$  N/ N! [         a  nUeSnAff = f7f)zc
Async: Retrieves a batch.

LiteLLM Equivalent of GET https://api.openai.com/v1/batches/{batch_id}
Taretrieve_batchN)
r#   r$   r   retrieve_batchr&   r'   r(   r)   r*   r+   )r|   r   r   r   r   r,   r-   r.   r/   r0   r1   r2   r3   s                r4   r~   r~      s     %%'$( ! 
 
 &&(#CGGT2"2249JKK}--**H  %H L*
  Y   B;A/B' 3B#4$B' B%B' B;B' "B;#B' %B' '
B81B33B88B;c                     [        S!0 UD6nUR                  =(       d    UR                  SS5      =(       d    SnUbE  [        U[        R
                  5      (       a&  [        U5      SL a  UR                  =(       d    SnUnO3Ub+  [        U[        R
                  5      (       d  [        U5      nOUc  Sn[        U UUS9n	UR                  SS5      SL n
SnUS	:X  Ga  UR                  =(       d6    [        R                  =(       d    [        R                  " S
5      =(       d    SnUR                  =(       d7    [        R                  =(       d     [        R                  " SS5      =(       d    SnUR                   =(       dD    [        R                   =(       d-    [        R"                  =(       d    [        R                  " S5      n[$        R'                  U
U	UUUUUR(                  S9nU$ US:X  Ga   UR                  =(       d"    [        R                  =(       d    [+        S5      nUR,                  =(       d"    [        R,                  =(       d    [+        S5      nUR                   =(       dK    [        R                   =(       d4    [        R.                  =(       d    [+        S5      =(       d    [+        S5      nUR                  S0 5      nUb  UR                  SS5        O[+        S5        [0        R'                  U
UUUUUR(                  U	S9nU$ [        R2                  R5                  SR7                  U5      SU[        R8                  " SS[        R:                  " SSS9S9S 9e! [<         a  nUeSnAff = f)"z\
Retrieves a batch.

LiteLLM Equivalent of GET https://api.openai.com/v1/batches/{batch_id}
r6   r7   NFr8   )r|   r   r   r~   Tr   r9   r:   r;   r<   )rC   retrieve_batch_datar=   r>   r?   rA   rB   r   rD   rE   rF   rG   r   rH   rI   )rC   r=   r>   rJ   rA   rB   r   rQ   rR   rS   rT   rU   rV   rW   rZ   r^   rb   )r   rA   rd   re   rf   rg   r   rh   ri   r   rc   r=   rj   rk   rl   r?   r>   rm   rn   r   rB   r   rJ   ro   rp   rr   rs   rt   ru   rv   r+   )r|   r   r   r   r   r,   rw   rA   rx   _retrieve_batch_requestrC   r=   r?   r>   r2   rJ   r3   s                    r4   r   r     sE   l.88!))VVZZ8I3-OVSV 7EMM22&':;uD"<<.3L"G GU]])K)KGnG_G"6'!#
 JJ0%8D@	"&(*  (( /##/99.// /	   ,, ''992D9 	   '' /??/%%/ 99-.	  /==#$;!)+77 > Hr a !G+(( 4##4!"23   ++ 7&&7!"56   '' 3??3$$3 ""893 "/2  ),,\2>J%/6/0-<<#!'+77$; = H,  $$44dkk' 0 #2!MMFjk 5    s&   G*M* -D&M* AM* *
M;4M66M;afterlimitc                 z  #     [         R                  " 5       nSUS'   [        [        U UUUU40 UD6n[        R
                  " 5       n	[        U	R                  U5      n
UR                  SU
5      I Sh  vN n[         R                  " U5      (       a  UI Sh  vN nU$ UnU$  N/ N! [         a  nUeSnAff = f7f)z*
Async: List your organization's batches.
Talist_batchesN)
r#   r$   r   list_batchesr&   r'   r(   r)   r*   r+   )r   r   r   r   r   r   r,   r-   r.   r/   r0   r1   r2   r3   s                 r4   r   r     s     %%'"& 
 
 &&(#CGGT2"2249JKK}--**H  %H L*
  r   c                     [        S 0 UD6nUR                  =(       dD    [        R                  =(       d-    [        R                  =(       d    [        R
                  " S5      nUR                  =(       d    UR                  SS5      =(       d    SnUbE  [        U[        R                  5      (       a&  [        U5      SL a  UR                  =(       d    Sn	U	nO3Ub+  [        U[        R                  5      (       d  [        U5      nOUc  SnUR                  SS5      SL n
US	:X  a  UR                  =(       d6    [        R                  =(       d    [        R
                  " S
5      =(       d    SnUR                   =(       d7    [        R                   =(       d     [        R
                  " SS5      =(       d    Sn["        R%                  U
U UUUUUUR&                  S9nU$ US:X  Ga  UR                  =(       d"    [        R                  =(       d    [)        S5      nUR*                  =(       d"    [        R*                  =(       d    [)        S5      nUR                  =(       dK    [        R                  =(       d4    [        R,                  =(       d    [)        S5      =(       d    [)        S5      nUR                  S0 5      nUb  UR                  SS5        O[)        S5        [.        R%                  U
UUUUUR&                  S9nU$ [        R0                  R3                  SR5                  U5      SU[        R6                  " SS[        R8                  " SSS9S9S9e! [:         a  nUeSnAff = f)!z2
Lists batches

List your organization's batches.
r<   r6   r7   NFr8   r   Tr   r9   r:   r;   )rC   r   r   r=   r>   r?   rA   rB   r   rD   rE   rF   rG   r   rH   rI   )rC   r=   r>   rJ   rA   rB   zHLiteLLM doesn't support {} for 'list_batch'. Only 'openai' is supported.rR   rS   rT   rU   rV   rW   rZ   r^   rb   )r   r>   rj   rm   rk   rl   rA   rd   re   rf   rg   r   rh   ri   rc   r=   r?   rn   r   rB   r   rJ   ro   rp   rr   rs   rt   ru   rv   r+   )r   r   r   r   r   r,   rw   r>   rA   rx   rC   r=   r?   r2   rJ   r3   s                   r4   r   r     s   `.88## ++!!+ yy)*	 	 "))VVZZ8I3-OVSV 7EMM22&':;uD"<<.3L"G GU]])K)KGnG_GJJ6$>	(*  (( /##/99.// /	   ,, ''992D9 	  /;;#!)+77 < 	Hj W !G+&//g73C3Cg~VfGgH++ 7&&7!"56   '' 3??3$$3 ""893 "/2  ),,\2>J%/6/0-::#!'+77 ; H*  $$44bii' 0 #2!MMFjk 5    s&   GM  D%M AM 
M-&M((M-c                      g Nrb   rb       r4   cancel_batchr   ,  s    r   c                     #    g 7fr   rb   rb   r   r4   acancel_batchr   0  s     s   )r   NNN)NNr   NNN)NNr   NN),__doc__r#   r&   rk   	functoolsr   typingr   r   r   r   r   r	   rf   rj   litellm.llms.azure.azurer
   litellm.llms.openai.openair   &litellm.llms.vertex_ai.batches.handlerr   litellm.secret_managers.mainr   litellm.types.llms.openair   r   r   litellm.types.routerr   litellm.utilsr   rn   rp   rq   strr"   r%   r~   r   intr   r   r   r   rb   r   r4   <module>r      s  
   	  A A   4 7 J 7 U U 5 0 +, (* 4RH  DL)-.2+/+u~+QR+ + !!?@	+
 tCH~&+ DcN++ c3h(+ +d DL)-.2+/Wu~WQRW W !!?@	W
 tCH~&W DcN+W c3h(W 5)CeO,,-Wx 7?)-.2+/&& !23& tCH~&& DcN+	&
 c3h(& &V 7?)-.2+/yy !23y tCH~&y DcN+	y
 c3h(y 5)CeO,,-yz  6>)-.2+/&C=&C=& !!23& tCH~&	&
 DcN+& c3h(&T  6>.2+/n	C=n	C=n	 !!23n	 DcN+	n	
 c3h(n	b		r   