Ë
    uPêj	,  ã            	       óÐ   — U d dl mZ d dlmZmZmZ d dlZd dlmZm	Z	m
Z
mZ d dlmZ d dlmZ dddd	d
dddœZeed<   ddeeef   dedeeef   fd„Zddededefd„Z G d„ d«      Zy)é    )Ú	Coroutine)ÚAnyÚFinalÚcastN)ÚAsyncAzureOpenAIÚAsyncOpenAIÚAzureOpenAIÚOpenAI)Úverbose_logger)ÚLiteLLMFineTuningJobÚqueuedÚrunningÚ	succeededÚfailedÚ	cancelled)ÚpendingÚ
notRunningr   r   r   ÚcanceledÚ	cancelingÚ_AZURE_STATUS_MAPÚdataÚis_azureÚreturnc                 óÐ   — |s| S | j                  «       }|j                  d«      €d|d<   |j                  d«      €g |d<   |j                  d«      }|t        v rt        |   |d<   |S )uÕ   
    Normalize Azure OpenAI FineTuningJob response to match OpenAI schema.

    Azure differences:
    - organization_id: null â†’ ""
    - result_files: null â†’ []
    - status: mapped via _AZURE_STATUS_MAP
    Úorganization_idÚ Úresult_filesÚstatus)ÚcopyÚgetr   )r   r   Ú
normalizedr   s       úl/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/openai/fine_tuning/handler.pyÚ_normalize_fine_tuning_job_dictr#      sw   € ñ ØˆàŸ	™	›€Jà‡~�~Ð'Ó(Ð0Ø(*ˆ
Ð$Ñ%à‡~�~�nÓ%Ð-Ø%'ˆ
�>Ñ"à—N‘N 8Ó,€FØÔ"Ñ"Ü0°Ñ8ˆ
�8ÑàÐó    Úresponsec                 óJ   — t        di t        | j                  «       |¬«      ¤ŽS )N)r   © )r   r#   Ú
model_dump)r%   r   s     r"   Ú&_litellm_fine_tuning_job_from_responser)   2   s"   € ÜÑlÔ"AÀ(×BUÑBUÓBWÐbjÔ"kÑlÐlr$   c                   óœ  ‡ — e Zd ZdZdˆ fd„Z	 	 	 	 ddedz  dedz  deej                  z  de	dz  d	edz  d
e
ez  ez  ez  dz  dededz  dedz  de
ez  ez  ez  dz  fd„Zdedeez  defd„Z	 ddedededz  dedz  dedz  deej                  z  de	dz  d	edz  d
e
ez  ez  ez  dz  deeeeef   z  fd„Zdedeez  defd„Z	 ddedededz  dedz  dedz  deej                  z  de	dz  d	edz  d
e
ez  ez  ez  dz  deeeeef   z  fd„Z	 	 ddeez  dedz  de	dz  fd„Z	 	 	 d dededz  dedz  dedz  deej                  z  de	dz  d	edz  d
e
ez  ez  ez  dz  dedz  de	dz  fd„Zdedeez  defd„Z	 ddedededz  dedz  dedz  deej                  z  de	dz  d	edz  d
e
ez  ez  ez  dz  deeeeef   z  fd„Zˆ xZS )!ÚOpenAIFineTuningAPIz/
    OpenAI methods to support for batches
    r   Nc                 ó"   •— t         ‰| �  «        y ©N)ÚsuperÚ__init__)ÚselfÚ	__class__s    €r"   r/   zOpenAIFineTuningAPI.__init__;   s   ø€ Ü‰ÑÕr$   Úapi_keyÚapi_baseÚtimeoutÚmax_retriesÚorganizationÚclientÚ	_is_asyncÚapi_versionÚlitellm_paramsc
                 óà   — t        «       }
d }|€]i }|
j                  «       D ]*  \  }}|dk(  s
|dk(  s|dk(  rŒ|dk(  r|�||d<   Œ#|€Œ&|||<   Œ, |du rt        di |¤Ž}|S t        di |¤Ž}|S |}|S )Nr0   r7   r8   r3   Úbase_urlTr'   )ÚlocalsÚitemsr   r
   )r0   r2   r3   r4   r5   r6   r7   r8   r9   r:   Úreceived_argsÚopenai_clientr   ÚkÚvs                  r"   Úget_openai_clientz%OpenAIFineTuningAPI.get_openai_client>   s±   € ô  &›xˆØVZˆØˆ>ØˆDØ%×+Ñ+Ó-ò  ‘��1Ø˜’; ! x¢-°1¸Ò3CØØ˜*’_¨¨Ø'(�D˜Ò$Ø‘]Ø�D˜’Gð ð ˜DÑ Ü +Ñ 3¨dÑ 3�ð Ðô	 !'¡¨¡�ð Ðð #ˆMàÐr$   Úcreate_fine_tuning_job_datar@   c              ƒ   ó€   K  —  |j                   j                  j                  di |¤Žƒ d {  –—† }t        |«      S 7 Œ­w)Nr'   )Úfine_tuningÚjobsÚcreater)   )r0   rD   r@   r%   s       r"   Úacreate_fine_tuning_jobz+OpenAIFineTuningAPI.acreate_fine_tuning_job^   s?   è ø€ ð
 !F × 9Ñ 9× >Ñ >× EÑ EÑ dÐHcÑ d×dˆä5°hÓ?Ð?ð eúó   ‚*>¬<­>c
           
      óh  — | j                  ||||||	||¬«      }
|
€t        d«      ‚|du r4t        |
t        t        f«      st        d«      ‚| j                  ||
¬«      S t        j                  d|«        t        t        |
«      j                  j                  j                  di |¤Ž}t        |«      S )N©r2   r3   r4   r5   r6   r7   r8   r9   újOpenAI client is not initialized. Make sure api_key is passed or OPENAI_API_KEY is set in the environment.Tú\OpenAI client is not an instance of AsyncOpenAI. Make sure you passed an AsyncOpenAI client.)rD   r@   z"creating fine tuning job, args= %sr'   )rC   Ú
ValueErrorÚ
isinstancer   r   rI   r   Údebugr   r
   rF   rG   rH   r)   )r0   r8   rD   r2   r3   r9   r4   r5   r6   r7   r@   r%   s               r"   Úcreate_fine_tuning_jobz*OpenAIFineTuningAPI.create_fine_tuning_jobg   sà   € ð ^b×]sÑ]sØØØØ#Ø%ØØØ#ð ^tó 	^
ˆð Ð ÜØ|óð ð ˜ÑÜ˜m¬kÔ;KÐ-LÔMÜ Øróð ð ×/Ñ/Ø,GØ+ð 0ó ð ô 	×ÑÐAÐC^Ô_ØMœ$œv }Ó5×AÑA×FÑF×MÑMÑlÐPkÑlˆÜ5°hÓ?Ð?r$   Úfine_tuning_job_idc              ƒ   ó€   K  — |j                   j                  j                  |¬«      ƒ d {  –—† }t        |«      S 7 Œ­w©N©rS   )rF   rG   Úcancelr)   ©r0   rS   r@   r%   s       r"   Úacancel_fine_tuning_jobz+OpenAIFineTuningAPI.acancel_fine_tuning_job�   s<   è ø€ ð
 !.× 9Ñ 9× >Ñ >× EÑ EÐYkÐ EÓ l×lˆÜ5°hÓ?Ð?ð múrJ   c
           
      óh  — | j                  ||||||	||¬«      }
|
€t        d«      ‚|du r4t        |
t        t        f«      st        d«      ‚| j                  ||
¬«      S t        j                  d|«       t        t        |
«      j                  j                  j                  |¬«      }t        |«      S )NrL   rM   TrN   ©rS   r@   z#canceling fine tuning job, args= %srV   )rC   rO   rP   r   r   rY   r   rQ   r   r
   rF   rG   rW   r)   ©r0   r8   rS   r2   r3   r9   r4   r5   r6   r7   r@   r%   s               r"   Úcancel_fine_tuning_jobz*OpenAIFineTuningAPI.cancel_fine_tuning_job—   sÞ   € ð ^b×]sÑ]sØØØØ#Ø%ØØØ#ð ^tó 	^
ˆð Ð ÜØ|óð ð ˜ÑÜ˜m¬kÔ;KÐ-LÔMÜ Øróð ð ×/Ñ/Ø#5Ø+ð 0ó ð ô 	×ÑÐBÐDVÔWÜœv }Ó5×AÑA×FÑF×MÑMÐasÐMÓtˆÜ5°hÓ?Ð?r$   ÚafterÚlimitc              ƒ   óp   K  — |j                   j                  j                  ||¬«      ƒ d {  –—† }|S 7 Œ­w)N©r^   r_   )rF   rG   Úlist)r0   r@   r^   r_   r%   s        r"   Úalist_fine_tuning_jobsz*OpenAIFineTuningAPI.alist_fine_tuning_jobs¿   s8   è ø€ ð !.× 9Ñ 9× >Ñ >× CÑ CÈ%ÐW\Ð CÓ ]×]ˆØˆð ^ús   ‚+6­4®6c           
      ó@  — | j                  ||||||||¬«      }|€t        d«      ‚|du r5t        |t        t        f«      st        d«      ‚| j                  |	|
|¬«      S t        j                  d|	|
«       |j                  j                  j                  |	|
¬«      }|S )NrL   rM   TrN   )r^   r_   r@   z*list fine tuning job, after= %s, limit= %sra   )rC   rO   rP   r   r   rc   r   rQ   rF   rG   rb   )r0   r8   r2   r3   r9   r4   r5   r6   r7   r^   r_   r@   r%   s                r"   Úlist_fine_tuning_jobsz)OpenAIFineTuningAPI.list_fine_tuning_jobsÈ   sØ   € ð ^b×]sÑ]sØØØØ#Ø%ØØØ#ð ^tó 	^
ˆð Ð ÜØ|óð ð ˜ÑÜ˜m¬kÔ;KÐ-LÔMÜ Øróð ð ×.Ñ.ØØØ+ð /ó ð ô
 	×ÑÐIÈ5ÐRWÔXØ'×3Ñ3×8Ñ8×=Ñ=ÀEÐQVÐ=ÓWˆØˆr$   c              ƒ   ó€   K  — |j                   j                  j                  |¬«      ƒ d {  –—† }t        |«      S 7 Œ­wrU   )rF   rG   Úretriever)   rX   s       r"   Úaretrieve_fine_tuning_jobz-OpenAIFineTuningAPI.aretrieve_fine_tuning_jobò   s<   è ø€ ð
 !.× 9Ñ 9× >Ñ >× GÑ GÐ[mÐ GÓ n×nˆÜ5°hÓ?Ð?ð oúrJ   c
           
      ó\  — | j                  ||||||	||¬«      }
|
€t        d«      ‚|du r.t        |
t        «      st        d«      ‚| j	                  ||
¬«      S t        j                  d|«       t        t        |
«      j                  j                  j                  |¬«      }t        |«      S )NrL   rM   TrN   r[   z"retrieving fine tuning job, id= %srV   )rC   rO   rP   r   rh   r   rQ   r   r
   rF   rG   rg   r)   r\   s               r"   Úretrieve_fine_tuning_jobz,OpenAIFineTuningAPI.retrieve_fine_tuning_jobú   sØ   € ð ^b×]sÑ]sØØØØ#Ø%ØØØ#ð ^tó 	^
ˆð Ð ÜØ|óð ð ˜ÑÜ˜m¬[Ô9Ü Øróð ð ×1Ñ1Ø#5Ø+ð 2ó ð ô 	×ÑÐAÐCUÔVÜœv }Ó5×AÑA×FÑF×OÑOÐcuÐOÓvˆÜ5°hÓ?Ð?r$   )r   N)NFNNr-   )NN)NNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r/   ÚstrÚfloatÚhttpxÚTimeoutÚintr
   r   r	   r   ÚboolÚdictrC   r   rI   r   r   rR   rY   r]   rc   re   rh   rj   Ú__classcell__)r1   s   @r"   r+   r+   6   sp  ø„ ñõð PTØØ"&Ø&*ñà�t‘ðð ˜‘*ðð ˜Ÿ™Ñ&ð	ð
 ˜4‘Zðð ˜D‘jðð ˜Ñ$ {Ñ2Ð5EÑEÈÑLðð ðð ˜4‘Zðð ˜t™ðð 
�+Ñ	 Ñ	+Ð.>Ñ	>ÀÑ	Eóð@@à%)ð@ð #Ð%5Ñ5ð@ð 
ó	@ð& PTñ&@àð&@ð &*ð&@ð �t‘ð	&@ð
 ˜‘*ð&@ð ˜4‘Zð&@ð ˜Ÿ™Ñ&ð&@ð ˜4‘Zð&@ð ˜D‘jð&@ð ˜Ñ$ {Ñ2Ð5EÑEÈÑLð&@ð 
 	¨#¨sÐ4HÐ*HÑ IÑ	Ió&@ðP@àð@ð #Ð%5Ñ5ð@ð 
ó	@ð$ PTñ&@àð&@ð  ð&@ð �t‘ð	&@ð
 ˜‘*ð&@ð ˜4‘Zð&@ð ˜Ÿ™Ñ&ð&@ð ˜4‘Zð&@ð ˜D‘jð&@ð ˜Ñ$ {Ñ2Ð5EÑEÈÑLð&@ð 
 	¨#¨sÐ4HÐ*HÑ IÑ	Ió&@ðV !Ø ñ	à"Ð%5Ñ5ðð �T‰zðð �T‰zó	ð$ PTØ Ø ñ(àð(ð �t‘ð(ð ˜‘*ð	(ð
 ˜4‘Zð(ð ˜Ÿ™Ñ&ð(ð ˜4‘Zð(ð ˜D‘jð(ð ˜Ñ$ {Ñ2Ð5EÑEÈÑLð(ð �T‰zð(ð �T‰zó(ðT@àð@ð #Ð%5Ñ5ð@ð 
ó	@ð$ PTñ&@àð&@ð  ð&@ð �t‘ð	&@ð
 ˜‘*ð&@ð ˜4‘Zð&@ð ˜Ÿ™Ñ&ð&@ð ˜4‘Zð&@ð ˜D‘jð&@ð ˜Ñ$ {Ñ2Ð5EÑEÈÑLð&@ð 
 	¨#¨sÐ4HÐ*HÑ IÑ	I÷&@r$   r+   )F)Úcollections.abcr   Útypingr   r   r   rq   Úopenair   r   r	   r
   Úlitellm._loggingr   Úlitellm.types.utilsr   r   Ú__annotations__ru   ro   rt   r#   r)   r+   r'   r$   r"   ú<module>r}      sŸ   ðÞ %ß #Ñ #ã ß EÓ Eå +Ý 4ð ØØØØØØñÐ �5ó ñ¨$¨s°C¨x©.ð ÀDð ÐUYÐZ]Ð_bÐZbÑUcó ñ6m°Sð mÀDð mÐUió m÷j@ò j@r$   