
    {h$                    :   d Z ddlmZ ddlmZmZmZmZ ddlm	Z	m
Z
 ddlmZmZ ddlmZ  ede	      Z G d	 d
e	ee         Z G d de	      Z G d dee      Z G d de	      Z G d de	      Z G d de	      Z G d de	      Z G d de	      Zeee   ef   Zy)z
Data models and types for batch processing.

This module contains all the Pydantic models, enums, and type definitions
used throughout the batch processing system.
    )annotations)AnyUnionTypeVarGeneric)	BaseModelField)datetimetimezone)EnumT)boundc                  H    e Zd ZU dZded<   ded<   dZded<    G d	 d
      Zy)BatchSuccessz&Successful batch result with custom_idstr	custom_idr   resultTboolsuccessc                      e Zd ZdZy)BatchSuccess.ConfigTN)__name__
__module____qualname__arbitrary_types_allowed     X/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/instructor/batch/models.pyConfigr      s    "&r   r   N)r   r   r   __doc____annotations__r   r   r   r   r   r   r      s#    0NIGT' 'r   r   c                  L    e Zd ZU dZded<   ded<   ded<   dZded<   d	Zd
ed<   y	)
BatchErrorz+Error information for failed batch requestsr   r   
error_typeerror_messageFr   r   Ndict[str, Any] | Noneraw_data)r   r   r   r    r!   r   r'   r   r   r   r#   r#      s*    5NOGT&*H#*r   r#   c                  (    e Zd ZdZdZdZdZdZdZdZ	y)	BatchStatusz(Normalized batch status across providerspending
processing	completedfailed	cancelledexpiredN)
r   r   r   r    PENDING
PROCESSING	COMPLETEDFAILED	CANCELLEDEXPIREDr   r   r   r)   r)   &   s#    2GJIFIGr   r)   c                  t    e Zd ZU dZdZded<   dZded<   dZded<   dZded<   dZ	ded<   dZ
ded	<   dZded
<   y)BatchTimestampsz Comprehensive timestamp trackingNzdatetime | None
created_at
started_atcompleted_at	failed_atcancelled_at
expired_at
expires_at)r   r   r   r    r8   r!   r9   r:   r;   r<   r=   r>   r   r   r   r7   r7   1   sK    *"&J&"&J&$(L/(!%I%$(L/("&J&"&J&r   r7   c                      e Zd ZU dZdZded<   dZded<   dZded<   dZded<   dZ	ded<   dZ
ded	<   dZded
<   dZded<   y)BatchRequestCountsz'Unified request counts across providersNz
int | Nonetotalr,   r-   r+   	succeedederroredr.   r/   )r   r   r   r    rA   r!   r,   r-   r+   rB   rC   r.   r/   r   r   r   r@   r@   =   sY    1E: !Iz FJ "J
! Iz GZ Iz GZr   r@   c                  <    e Zd ZU dZdZded<   dZded<   dZded<   y)BatchErrorInfozBatch-level error informationN
str | Noner$   r%   
error_code)r   r   r   r    r$   r!   r%   rG   r   r   r   rE   rE   N   s#    '!J
! $M:$!J
!r   rE   c                  J    e Zd ZU dZdZded<   dZded<   dZded<   dZded<   y)
BatchFileszFile references for batch jobNrF   input_file_idoutput_file_iderror_file_idresults_url)	r   r   r   r    rJ   r!   rK   rL   rM   r   r   r   rI   rI   V   s-    ' $M:$!%NJ% $M:$"K"r   rI   c                      e Zd ZU dZded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   dZded<    ee      Zded<   dZ	ded<   dZ
ded<   dZded<   dZded<   edd       Zedd       Zy)BatchJobInfozJEnhanced unified batch job information with comprehensive provider supportr   idproviderr)   status
raw_statusr7   
timestampsr@   request_countsrI   filesNzBatchErrorInfo | Noneerror)default_factorydict[str, Any]metadatar&   r'   rF   modelendpointcompletion_windowc                   t         j                  t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  d}t        |j                  d      r(t        j                  |d   t        j                        nd|j                  d      r(t        j                  |d   t        j                        nd|j                  d      r(t        j                  |d   t        j                        nd|j                  d      r(t        j                  |d   t        j                        nd|j                  d      r(t        j                  |d   t        j                        nd|j                  d	      r(t        j                  |d	   t        j                        nd|j                  d
      r(t        j                  |d
   t        j                        nd      }|j                  di       }t        |j                  d      |j                  d      |j                  d            }t        |j                  d      |j                  d      |j                  d            }d}|j                  d      r@|d   }t        |j                  d      |j                  d      |j                  d            } | |d   d|j                  |d   t         j                        |d   |||||j                  di       ||j                  d      |j                  d             S )!z!Create from OpenAI batch response)
validatingin_progress
finalizingr,   r-   r/   r.   
cancellingr8   )tzNin_progress_atr:   r;   r<   r=   r>   )r8   r9   r:   r;   r<   r=   r>   rU   rA   r,   r-   )rA   r,   r-   rJ   rK   rL   )rJ   rK   rL   errorstypemessagecode)r$   r%   rG   rP   openairR   rZ   r\   r]   )rP   rQ   rR   rS   rT   rU   rV   rW   rZ   r'   r\   r]   )r)   r0   r1   r2   r3   r5   r4   r7   getr
   fromtimestampr   utcr@   rI   rE   )	cls
batch_data
status_maprT   request_counts_datarU   rV   rW   
error_datas	            r   from_openaizBatchJobInfo.from_openai   s   
 &--&11%00$..!(("**$..%//	

 % >>,/ &&z,'?HLLQ >>"23 &&z2B'CU >>.1 &&z.'AhllS >>+. &&z+'>8<<P >>.1 &&z.'AhllS >>,/ &&z,'?HLLQ >>,/ &&z,'?HLLQE$

N )nn-=rB+%))'2)--k:&**84
 $..9%>>*:;$..9
 >>(##H-J"%>>&1(nnY7%>>&1E $>>*X"68K8KL!(+!)^^J3^^J/(nn-@A
 	
r   c                   t         j                  t         j                  t         j                  t         j                  t         j
                  d}d }t         ||j                  d             ||j                  d             ||j                  d             ||j                  d             ||j                  d                  }|j                  di       }t        |j                  d	      |j                  d
      |j                  d      |j                  d      |j                  d      |j                  d	d      |j                  d
d      z   |j                  dd      z         }t        |j                  d            } | |d   d|j                  |d   t         j                        |d   ||||      S )z$Create from Anthropic batch response)r`   endedr-   r.   r/   c                    | sy 	 t        | t              r| S t        | t              r%t        j                  | j	                  dd            S y # t
        t        f$ r Y y w xY w)NZz+00:00)
isinstancer
   r   fromisoformatreplace
ValueErrorAttributeError)timestamp_values    r   parse_iso_timestampz8BatchJobInfo.from_anthropic.<locals>.parse_iso_timestamp   sf    "ox8**5#11'//X>   / s   A 4A AAr8   cancel_initiated_atended_atr>   )r8   r9   r<   r:   r>   rU   r+   rB   rC   canceledr/   r   )r+   rB   rC   r.   r/   rA   rM   )rM   rP   	anthropicprocessing_status)rP   rQ   rR   rS   rT   rU   rV   r'   )r)   r1   r2   r3   r4   r5   r7   rj   r@   rI   r0   )rm   rn   ro   r}   rT   rp   rU   rV   s           r   from_anthropiczBatchJobInfo.from_anthropic   s   
 '11 **!(($.."**

	  %*:>>,+GH*|, -Z^^<Q-RS,Z^^J-GH*:>>,+GH

 )nn-=rB+*..|<)--k:'++I6)-- (++I6%)),:!%%k156!%%i34
 "}5
 $ >>*-@"A;CVCVW!"56!)	
 		
r   )rn   rY   returnrO   )r   r   r   r    r!   rW   r	   dictrZ   r'   r[   r\   r]   classmethodrr   r   r   r   r   rO   rO   _   s    T 	GM O   '&  $(E '  %T:Hn:&*H#* E:Hj$(z([
 [
z C
 C
r   rO   N)r    
__future__r   typingr   r   r   r   pydanticr   r	   r
   r   enumr   r   r   r#   r   r)   r7   r@   rE   rI   rO   BatchResultr   r   r   <module>r      s    # / / % ' Cy!'9gaj '+ +#t 	'i 	' ""Y "# #B
9 B
L LOZ/0r   