
    oiN7                         S SK r S SKrS SKrS SKrS SKrS SKrSSKJr   S SKJ	r	  \	r
S\
R                  ;   r/ SQrS rS	 rS
 rSS jrS rS rSS jr S r S rg!   S SKJ
r
   N?= f)    N   )logger)PreTrainedConfig)PretrainedConfigtorch_dtype)HAS_TORCH_DTYPEdtype_from_configadd_dtype_kwargsset_dtype_in_configget_transformers_model_typefix_lora_auto_mappingget_auto_processorc                 d    SS/n[         (       a  SS/nS nU H  nUb  M  [        XS 5      nM     U$ )Ndtyper   )r   getattr)configcheck_orderr   
dtype_names       N/home/james-whalen/.local/lib/python3.13/site-packages/unsloth_zoo/hf_utils.pyr	   r	   *   sB    M*K$g.E!
=F5E " L    c                      [        U[        R                  5      (       a  [        U5      R	                  S5      S   OUn[
        (       a  [        U SU5        g [        U SU5        g !   [        U W5         g = f)N.r   r   )
isinstancetorchr   strsplitr   setattrset_dtype_in_config_fallbackr   r   string_dtypes      r   r   r   4   sa    ;4>uekk4R4Rs5z'',R0X]?FM<8FG\2;$V\:s   AA' A' 'A7c                 B    [        U[        R                  5      (       a  [        U5      R	                  S5      S   OUn[
        (       a  X R                  S'   g X R                  S'   g !   [        R                  R                  SS5      S:X  a  [        S5         g  g = f)	Nr   r   r   r   UNSLOTH_ENABLE_LOGGING01z;Unsloth: Failed to set dtype in config, fallback failed too)r   r   r   r   r   r   __dict__osenvirongetprintr    s      r   r   r   ?   s    Q4>uekk4R4Rs5z'',R0X]?-9OOM*'3OOG$Q::>>2C8C?OP @s   AA) A) )1Bc                 :    Uc  0 n[         (       a  XS'   U$ XS'   U$ )Nr   r   )r   )r   kwargs_dicts     r   r
   r
   J   s2    %*M"   %Gr   c                     [        U [        R                  5      (       a  [        U 5      R	                  SS5      S   $ [        U [        5      (       ao  U R                  S5      (       aY  U R	                  SS5      S   n[        [        U5      (       a/  [        [        [        U5      [        R                  5      (       a  U$ U $ ! [         a     U $ f = f)Nr   r   r   ztorch.)	r   r   r   r   r   
startswithhasattrr   	Exception)xtails     r   _dtype_stringifyr3   S   s    
a%%q6<<Q'++a!,,x"8"8773?2&Dud##
75$3G(U(U H  Hs   <C BC 
CCc                 f   [        U [        5      (       a/  U R                  5        VVs0 s H  u  pU[        U5      _M     snn$ [        U [        5      (       a  U  Vs/ s H  n[        U5      PM     sn$ [        U [
        5      (       a  [        S U  5       5      $ [        U 5      $ s  snnf s  snf )Nc              3   8   #    U  H  n[        U5      v   M     g 7fN)_normalize_dict_dtypes).0vs     r   	<genexpr>)_normalize_dict_dtypes.<locals>.<genexpr>i   s     <1+A..s   )r   dictitemsr7   listtupler3   )objkr9   s      r   r7   r7   c   s    #t9<E)!,,EE#t3673a&q)377#u<<<<C   F7s   B(B.c           	        ^^ U c  [        S5      eSnSSKJn  [        U 5      [        L a  SU ;   a  U S   n Sn[        [        U 5      U5      (       Ga  [        R                  " S[        U 5      5      n[        U5      n[        U5      S:X  a  [        R                  " S5        [        U5      S:w  a  US   R                  S	5      nU/nO[        U S
S5      b  U R                  R!                  SS5      nUb  [        U5      nUR#                  SS	5      S   R%                  5       nSSKn[)        UR*                  5      nU HK  n	XiR%                  5       R-                  SS5      R-                  SS5      R-                  SS5      :X  d  MH  U	/n  O     [        U SS5      n
U
c  [/        S5      e[        U
5      n
U
R%                  5       [0        R2                  S'   Uc  SSKJn   UR9                  U
US9n SnOSn U(       a2  SSK!J"mJ#m  UU4S jn[        U" [        U SS 5      " 5       S 5      5      n Uc  [/        S![        U 5       35      e/ nU HZ  nUR%                  5       nUR-                  SS5      nUR-                  S"S5      nUR-                  SS5      nURI                  U5        M\     [K        U5      nSSKn[)        UR*                  5      nSn[M        U5       Hl  u  nnUU;  a^  [        U5      n[O        [        U5      SS#5       Vs/ s H  nSRQ                  USU 5      PM     nnU H  nUU;   d  M  UUU'   Sn  Mf     Mj  SnMn      U(       d#  [        R                  " S$[        U 5       S%35        [K        U5      nU$ ! [:         a	  nSn UeSnAf[<         a6  nSSKJn  [        U5      nSU;   a  [A        SU
 SU S35      eSn  SnAGNSnAff = fs  snf )&z<Gets model_type from config file - can be PEFT or normal HF NzUnsloth: No config file found - are you sure the `model_name` is correct?
If you're using a model on your local device, confirm if the folder location exists.
If you're using a HuggingFace online model, check if it exists.r   
PeftConfigdefaultFz.transformers\.models\.([^\.]{2,})\.modeling_\1z?*** `model_type_list` in `get_transformers_model_type` is None!r   auto_mappingbase_model_classFor_ r   -base_model_name_or_pathzAUnsloth: adapter_config.json's `base_model_name_or_path` is None?UNSLOTH_MODEL_NAME)
AutoConfig)trust_remote_codeT)__version__architecture`z)` is not supported yet in `transformers==zU`.
Please update transformers via `pip install --upgrade transformers` and try again.)MappingSequencec              3   R  >#    U /nU(       a  UR                  5       n[        UT5      (       a+  X;   a  X1   v   UR                  UR                  5       5        OB[        UT5      (       a1  [        U[        [
        [        45      (       d  UR                  U5        U(       a  M  g g 7fr6   )popr   extendvaluesr   bytes	bytearray)data
target_keystackr@   rS   rT   s       r   find)get_transformers_model_type.<locals>.find   s|     FEiikc7++!(!o-LL.X..z#UT]G^7_7_LL% %s   B B'%B'to_dictc                      0 $ r6    )argskwargss     r   <lambda>-get_transformers_model_type.<locals>.<lambda>   s    SUr   
model_typez6Unsloth: Cannot determine model type for config file: /r   z+*** Could not find model_type for config = z ***))RuntimeErrorpeftrD   typer<   
issubclassrefinditerr   r>   lenr   infogroupr   rF   r)   rsplitlowertransformers.modelsdirmodelsreplace	TypeErrorr'   r(   transformersrN   from_pretrainedImportErrorr0   rP   
ValueErrorcollections.abcrS   rT   appendsorted	enumeraterangejoin)r   rO   model_typesrD   retry_configmodel_type_listrg   ry   supported_model_typesmodeling_filerL   rN   errortransformers_versionautoconfig_errorr^   final_model_typesall_model_types
found_typejicurrent_model_typerS   rT   s                         @@r   r   r   m   s   ~N
 	

 KF|t	V 3	"L$v,
++++&WY\]cYde/1$KKYZ1$(+11!4J%,KV^T2>,,001CTJJ% _
'..ua8;AAC
*(+L,?,?(@%%:M!%8%8%:%B%B3%K%S%STWY\%]%e%efikn%oo'4o &;  #*&2KT"R"*_``"%&=">+B+H+H+J

'( /#33+&7 4   $ 	 5	& 4	;U V XZfghPQTU[Q\P]^__!
%%'
''S1
''S1
''S1
  , " 01 ,--.OJ"#45:_,z*K=B3{CSUVXZ=[\=[277;r?3=[K\&1"%8+=%a(!%J	 '2 J 6 	A#f+dST01I   L#&u: !%55$344]^r]s tm n  j ]s*   "N O
ONO"+OOc                    [        U SS 5      c  g U R                  n[        U5      [        L a  UR	                  5       OU/nU H  n[        U SS 5      b  U R                  [        USS5      S9nO1[        U SS 5      b  U R                  R                  nOU R                  n UR                  nUR                  USS.n[        US	S 5      b  M  Xcl
        M     g )
Npeft_config_get_base_model_classis_prompt_learningF)is_prompt_tuning
base_modelT)rG   parent_libraryunsloth_fixedrF   )r   r   rk   r<   rX   r   r   	__class__
__module____name__rF   )modelr   rX   r   rG   r   auto_mapping_dicts          r   r   r      s    umT*2F##K%)+%6$%>[![MF5148D$::#*63G#O  ;   UL$/;$//99$)44 0 9 9,"

 6>408"3% & 	r   c                 b   [         R                  R                  U 5      (       d  g  SSKJn  UR                  5        VVs0 s H  u  p4XC_M	     nnnS nS nS H|  n[         R                  R                  X5      n	[         R                  R                  U	5      (       d  MH   [        U	SSS9 n
[        R                  " U
5      nS S S 5        WS   nXV   n  O    Ucj  [         R                  R                  U S5      n[         R                  R                  U5      (       a&   SS	K
Jn  UR                  U 5      n[        U5      S   n Uc  SS
KJn   UR                  " U 40 UD6$  ["        R$                  " 5       nUR&                  nSU0n[        [         R                  R                  US5      S5       n
U
R)                  [        R*                  " U5      5        S S S 5        [         R,                  " U 5      nU Hn  nSU;  d  M  SU;  d  M  SU;  d  M   [.        R0                  " [         R                  R                  X5      [         R                  R                  UU5      5        Mp      SSKJn   UR                  " U40 UD6nUR5                  5         Uc  SS
KJn   UR                  " U 40 UD6$ U$ !    g = fs  snnf ! , (       d  f       GN= f!    GM  = f!    GN= f!   [!        SU  S35      e= f! , (       d  f       GN'= f!    GM  = f!   S n N= f!   [!        SU  S35      e= f)Nr   )PROCESSOR_MAPPING_NAMES)zprocessor_config.jsonzpreprocessor_config.jsonztokenizer_config.jsonrzutf-8)encodingprocessor_classzadapter_config.jsonrC   )AutoTokenizerz.Unsloth: Failed loading a AutoProcessor from `rR   rg   zconfig.jsonwr   safetensorsbin)AutoProcessor)r'   pathexists(transformers.models.auto.processing_autor   r=   r   openjsonloadrj   rD   rz   r   ry   r   rx   tempfileTemporaryDirectorynamewritedumpslistdirshutilcopyr   cleanup)r   rd   r   rA   r9   reversal_mapr   rg   filenameprocessor_configfr   adapter_configrD   r   r   temp_directory	temp_nameconfig_file	filenamesr   	processors                         r   r   r     s   77>>$T (?'D'D'FH'FtqQU'FLHOJ
 77<<777>>*++*C'Ba!YYq\F C"():";):
 	 d,AB77>>.))+(88>8EaH
 	.	V 00@@@ 	 002N##I  *-K	bggll9m4c	:a	

;'( 
; 

4 I("}H'DV^I^BGGLL8"'',,yRZ:[\  	 +!11)FvF	  .	V 00@@@ cH CB
	VLTFRSTUU 
;	:		VLTFRSTUUs~   J5  J< K+KK %K K% 3&K9AL3L  L 5J9
K	KKK"%K69
LLLL.r6   )F)r'   r   r   r   r   rm   logr   ry   r   r   __doc__r   __all__r	   r   r   r
   r3   r7   r   r   r   rb   r   r   <module>r      s   " 
     	 .-'  #3#;#;;	;	Q !~~ 	4 Wp S
.-s   A A'