
    bi                         d dl mZ d dlZd dlmZmZmZ ddlmZm	Z	m
Z
  e
j        e          Zdededed	ed
ed         f
dZd	ededefdZdedefdZ	 	 	 ddedededefdZdS )    )OptionalN)
DiscussionHfApiget_repo_discussions   )cached_filehttp_user_agentloggingapimodel_idpr_titletokenreturnr   c                    |                      ||          d         j        }t          ||          D ]Q}|j        |k    rD|j        dk    r9|j        r2|                      ||j        |          }||d         j        k    r|c S Rd S )Nr   r   )repo_idr   openrevisionr   r   )list_repo_commits	commit_idr   titlestatusis_pull_requestgit_reference)r   r   r   r   main_commit
discussioncommitss          ^/root/projects/butler/venv/lib/python3.11/site-packages/transformers/safetensors_conversion.pyprevious_prr       s    '''>>qAKK*85III " "
x''J,=,G,GJLf,G++Hz?W_d+eeGgaj222!!!!4    privatec                    t                               d           d}| d}d }d||| gi}t          j        |d|                                          }|d         }t          j        d	| d
|           5 }		 t                               d            ||	           nA# t          $ r4}
t                               dt          |
                      Y d }
~
nd }
~
ww xY wd d d            d S # 1 swxY w Y   d S )Nz;Attempting to convert .bin model on the fly to safetensors.z$https://safetensors-convert.hf.spacez	/call/runc                    |                                  D ]}t          |t                    s|                                }|                    d          ro|dd          }t
                              d|            |dk    r d S |dk    rt
                              d           t
                              d|            t
                              |           d S )Nzevent:   zSafetensors conversion status: complete	heartbeat	HeartbeatzUnknown status )
iter_lines
isinstancestrdecode
startswithloggerdebug)_sse_connectionliner   s      r   startzspawn_conversion.<locals>.start   s    #..00 	# 	#DdC(( %{{}}x(( #abbGvGGHHHZ''FF{**LL----LL!;6!;!;<<<<T""""	# 	#r!   dataT)follow_redirectsjsonevent_idGET/z*Spawning safetensors automatic conversion.zError during conversion: )
r.   infohttpxpostr5   streamr/   	Exceptionwarningrepr)r   r"   r   safetensors_convert_space_urlsse_urlr2   r3   resultr6   sse_connectiones              r   spawn_conversionrE      s   
KKMNNN$J!.999G# # #" Xw./DZ$TBBBGGIIFj!H	e44(44	5	5 B	BLLEFFFE.!!!! 	B 	B 	BNN@tAww@@AAAAAAAA	B	B B B B B B B B B B B B B B B B B Bs<   7C-9%BC-
C)*CC-CC--C14C1c                    |                      |          j        }t                              d           d}|                    d          }t          | |||          }||s0|j        dk    r%t          |||           t          | |||          }nt                              d           |t          d          d|j	         }|S )	Nz(Attempting to create safetensors variantz*Adding `safetensors` variant of this modelr   r   SFconvertbotzSafetensors PR existszCould not create safetensors conversion PR. The repo does not appear to have a file named pytorch_model.bin or model.safetensors.If you are loading with variant, use `use_safetensors=False` to load the original model.zrefs/pr/)

model_infor"   r.   r9   getr    authorrE   OSErrornum)r   r   kwargsr"   r   r   prshas           r   get_conversion_pr_referencerP   ;   s    nnX&&.G
KK:;;;;HJJwE
 
S(HE	:	:	:B	z'zbi>&A&A222h>>>+,,,	zg
 
 	

 RV

CJr!   Fmodel.safetensorsmodel.safetensors.index.jsonpretrained_model_name_or_pathignore_errors_during_conversionsafe_weights_namesafe_weights_index_namec                 ^   	 t          |                    d          dt                      i          }t          || fi |}|dS ||d<   |d= |                    | |||                    d                    }|r|n|}t          | |fi |}	|	||fS # t          $ r}
|s|
Y d }
~
d S d }
~
ww xY w)Nr   z
user-agent)r   headers)NNr   _commit_hashr   )r   rI   r	   rP   file_existsr   r=   )rS   rT   rU   rV   cached_file_kwargsr   rO   shardedfilenameresolved_archive_filerD   s              r   auto_conversionr_   W   s"   ,0099LRaRcRcCdeee)#/LccPbcc;:),:&~. //)#$((11	 " 
 
 /6L**;L +,I8 j jWi j j$c722   . 	G	 	 	 	 	 	s   AB AB 
B,B''B,)FrQ   rR   )typingr   r:   huggingface_hubr   r   r   utilsr   r	   r
   
get_logger__name__r.   r+   r    boolrE   rP   r_    r!   r   <module>rg      sR          C C C C C C C C C C 8 8 8 8 8 8 8 8 8 8 
	H	%	%U c S  R^I_    !BC !B$ !B# !B !B !B !BHU c    < -20#A	 #&%)  !	     r!   