
    oie                    d   % S SK J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Jr  SSKJr  SSKJrJrJrJrJrJrJr  SSKJr  SS	KJr  \\\\\\S
.rS\S'    " S S5      r " S S\5      r " S S\5      r  " S S\5      r! " S S\5      r" " S S\5      r# " S S\5      r$ " S S\5      r%g)    )annotationsN)Optional)	AutoModelAutoModelForCausalLMAutoModelForQuestionAnsweringAutoModelForSeq2SeqLM"AutoModelForSequenceClassificationAutoModelForTokenClassificationAutoTokenizer   )
PeftConfig)	PeftModelPeftModelForCausalLMPeftModelForFeatureExtractionPeftModelForQuestionAnsweringPeftModelForSeq2SeqLM"PeftModelForSequenceClassificationPeftModelForTokenClassification)TOKENIZER_CONFIG_NAME)check_file_exists_on_hf_hub)SEQ_CLSSEQ_2_SEQ_LM	CAUSAL_LM	TOKEN_CLSQUESTION_ANSFEATURE_EXTRACTIONzdict[str, type[PeftModel]] MODEL_TYPE_TO_PEFT_MODEL_MAPPINGc                  P    \ rS rSrSrSrS r\    S       SS jj5       rSr	g)_BaseAutoPeftModel7   Nc                    [        U R                  R                   SU R                  R                   SU R                  R                   S35      e)Nz+ is designed to be instantiated using the `z5.from_pretrained(pretrained_model_name_or_path)` or `z.from_config(config)` methods.)EnvironmentError	__class____name__)selfargskwargss      C/home/james-whalen/.local/lib/python3.13/site-packages/peft/auto.py__init___BaseAutoPeftModel.__init__;   sR    ~~&&' (..112 3''((FH
 	
    c           	        [         R                  " U4SU0UD6nUR                  nUR                  n	[	        USS5      n
U R
                  b  U R
                  nOU R
                  c  U
b  [        S5      eU
b^  [        U
   nU R                  R                  UR                  :w  a0  [        SUR                   SU R                  R                   S35      eOVU
cH  [	        USS5      b:  [	        USS5      nUS	   nUS
   n[        R                  " U5      n[	        UU5      nO[        S5      eWR                  " U4SU	0UD6nSn[        R                  R                  [        R                  R                  U[         5      5      (       a  SnOHUR#                  SS5      nUc  UR#                  SS5      n[%        U[         UUR#                  SS5      US9nU(       a  ['        US5      (       at  [(        R                  " XR#                  SS5      S9nUR+                  5       R,                  R.                  S   n[1        U5      U:  a  UR3                  [1        U5      5        U R                  R                  " UU4UUUS.UD6$ )z
A wrapper around all the preprocessing steps a user needs to perform in order to load a PEFT model. The kwargs
are passed along to `PeftConfig` that automatically takes care of filtering the kwargs of the Hub methods and
the config object init.
revision	task_typeNzCannot use `AutoPeftModel` with a task type, please use a specific class for your task type. (e.g. `AutoPeftModelForCausalLM` for `task_type='CAUSAL_LM'`)zExpected target PEFT class: z, but you have asked for: zE make sure that you are loading the correct model for your task type.auto_mappingbase_model_classparent_libraryzxCannot infer the auto class from the config, please make sure that you are loading the correct model for your task type.FTtokenuse_auth_token	repo_type)repo_idfilenamer-   r4   r2   get_input_embeddingstrust_remote_code)r8   r   )adapter_nameis_trainableconfig)r   from_pretrainedbase_model_name_or_pathr-   getattr_target_class
ValueErrorr   _target_peft_classr$   	importlibimport_moduleospathexistsjoinr   getr   hasattrr   r7   weightshapelenresize_token_embeddings)clspretrained_model_name_or_pathr9   r:   r;   r-   r'   peft_configbase_model_pathbase_model_revisionr.   target_classexpected_target_classr/   r0   parent_library_namer1   
base_modeltokenizer_existsr2   	tokenizerembedding_sizes                         r(   r<   "_BaseAutoPeftModel.from_pretrainedC   s    !001NlYalekl%==)22Kd;	(,,L&9+@ m   $DY$O!%%..2G2P2PP 23H3Q3Q2RRlmp  nD  nD  nM  nM  mN[\  Q
 7;#M#Y";EL+,>?"./?"@&445HIN">3CDL K  "11/jL_jcij
 77>>"'',,'DF[\]]#JJw-E}

#3T::5.! **[$7  
4J K K%55-L_afAgI (<<>EEKKANN9~.223y>B%%55)
 &%
 
 	
r+    )defaultFNN)r9   strr:   boolr;   zOptional[PeftConfig]r-   zOptional[str])
r$   
__module____qualname____firstlineno__r?   rA   r)   classmethodr<   __static_attributes__r[   r+   r(   r   r   7   sb    M
  &"'+"&Q
 Q
 	Q

 %Q
  Q
 Q
r+   r   c                      \ rS rSrSr\rSrg)AutoPeftModel   Nr[   )r$   r_   r`   ra   r?   r   rA   rc   r[   r+   r(   re   re      s    M"r+   re   c                      \ rS rSr\r\rSrg)AutoPeftModelForCausalLM   r[   N)	r$   r_   r`   ra   r   r?   r   rA   rc   r[   r+   r(   rh   rh      s    (M-r+   rh   c                      \ rS rSr\r\rSrg)AutoPeftModelForSeq2SeqLM   r[   N)	r$   r_   r`   ra   r   r?   r   rA   rc   r[   r+   r(   rk   rk      s    )M.r+   rk   c                      \ rS rSr\r\rSrg)&AutoPeftModelForSequenceClassification   r[   N)	r$   r_   r`   ra   r	   r?   r   rA   rc   r[   r+   r(   rn   rn      s    6M;r+   rn   c                      \ rS rSr\r\rSrg)#AutoPeftModelForTokenClassification   r[   N)	r$   r_   r`   ra   r
   r?   r   rA   rc   r[   r+   r(   rq   rq      s    3M8r+   rq   c                      \ rS rSr\r\rSrg)!AutoPeftModelForQuestionAnswering   r[   N)	r$   r_   r`   ra   r   r?   r   rA   rc   r[   r+   r(   rt   rt      s    1M6r+   rt   c                      \ rS rSr\r\rSrg)!AutoPeftModelForFeatureExtraction   r[   N)	r$   r_   r`   ra   r   r?   r   rA   rc   r[   r+   r(   rw   rw      s    M6r+   rw   )&
__future__r   rB   rD   typingr   transformersr   r   r   r   r	   r
   r   r;   r   
peft_modelr   r   r   r   r   r   r   utils.constantsr   utils.otherr   r   __annotations__r   re   rh   rk   rn   rq   rt   rw   r[   r+   r(   <module>r      s    #  	       3 4 2)%017@  "< ^
 ^
B#& #
.1 .
/ 2 /
<-? <
9*< 9
7(: 7
7(: 7r+   