
    9im                     @   S SK r S SKrS SKJr  S SKJrJrJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJrJrJr  \	" 5       rS\S	\\   S
\\   S\4S jrS\4S jrS rS rS\S\4S jrS\\   4S jrS\S	\\   S\\   4S jrS\S	\S\\   4S jr SS\S\\   S\4S jjrg)    N)
MethodType)AnyListOptional)
get_logger)Tasks)	INDEX_KEY)LazyImportModuleis_torch_availableis_transformers_available	model_dir	task_name
model_typereturnc                     Ub  Uc  gSUU4[         R                  " 5       [           ;   a  g[        R                  R                  U S5      n[        R                  R                  U5      (       a  gg)NFMODELSTzms_wrapper.py)r
   get_ast_indexr	   ospathjoinexists)r   r   r   ms_wrapper_paths       `/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/utils/automodel_utils.pycan_load_by_msr      sd    Y.)+99;IFGggll9o>O	ww~~o&&    
module_objc                    SSK Jn  [        U S5      (       as  S[        R                  " U R
                  5      R                  R                  5       ;   a6  S[        U R                  5      ;   a  [        UR
                  U 5      U l        g g g g )Nr   PreTrainedModel_set_gradient_checkpointingvaluezmodelscope.)transformersr   hasattrinspect	signaturer    
parameterskeysstr	__class__r   )r   r   s     r   fix_upgrader*      sy    ,z8997,,6688B
446JZ%9%9!::1;772E
. ;J :r   c                 >    [        U 5        U R                  " U0 UD6  g N)r*   post_init_origin)selfargskwargss      r   	post_initr1   '   s    4*6*r   c                     [        5       (       a~  [        5       (       an  SS Kn SSKJn  SSKJn  UR                  U R                  5      UR                  S5      :  a/  [        US5      (       d  UR                  Ul
        [        Ul	        g g g g g )Nr   r   )versionz4.35.0r-   )r   r   r"   r   	packagingr3   parse__version__r#   r1   r-   )r"   r   r3   s      r   fix_transformers_upgrader7   ,   su     ""'9';';0%==112gmmH6MM1CDD/>/H/HO,(1O% E N (<"r   automodel_classc                     U R                   n[        U5      U R                  R                  5       ;   a  g[	        US5      (       a  X!R
                  ;   a  gg)NTauto_mapF)__name__type_model_mappingr'   r#   r:   )r8   configautomodel_class_names      r   _can_load_by_hf_automodelr@   8   sI    *33F|55::<<vz""';'Nr   c           	         SS K Js  Jn  [        U S5      (       d  g U R                  nUR                  5        Vs/ s H  o3R                  S5      (       d  M  UPM     nn[        U5      S:X  a  [        XS   5      $ [        U5      S:  a9  [        [        U Vs/ s H  o2U   PM	     sn5      5      S:X  a  [        XS   5      $ g s  snf s  snf )Nr   r:   	AutoModel   )
modelscope.utils.hf_utilutilshf_utilr#   r:   r'   
startswithlengetattrset)r>   rF   r:   kautomodel_lists        r   get_default_automodelrM   A   s    ..6:&&H!)NALL4MaNN
>awq 122
>Q3n5n!n56$8;<$=wq 122 O 6s   CCC
c           
      .   SSK JnJnJnJnJnJn  [        R                  U[        R                  U[        R                  U[        R                  U[        R                  U0n[        R                  R                  U S5      n	[        R                  R!                  U	5      (       d  g  UR#                  U SS9n
Uc  [%        U
5      nOUR'                  US 5      nUc  g [)        X5      (       a  U$ XL a  [)        XZ5      (       a  U$ g ! [*         a     g f = f)Nr   )
AutoConfigrB   AutoModelForCausalLMAutoModelForSeq2SeqLMAutoModelForTokenClassification"AutoModelForSequenceClassificationzconfig.jsonF)trust_remote_code)
modelscoperO   rB   rP   rQ   rR   rS   r   backbonechattext_generationtext_classificationtoken_classificationr   r   r   r   from_pretrainedrM   getr@   	Exception)r   r   rO   rB   rP   rQ   rR   rS   automodel_mappingconfig_pathr>   r8   s               r   get_hf_automodel_classr`   O   s    @ @
 		

(3!!#E""$C '',,y-8K77>>+&&++I+O3F;O/33ItDO"$_==""3-.CLL(( s   )4D D 0D 
DDuse_hfc                 ~    [        X5      nU(       a  Uc  [        SU S35      eS nUb  UR                  " U 40 UD6nU$ )Nz&Model import failed. You used `use_hf=z&`, but the model is not a model of hf.)r`   
ValueErrorr[   )r   r   ra   r0   r8   models         r   try_to_load_hf_modelre   r   s\    ,YBO/)A& J? ? @ 	@ E"//	DVDLr   owner_groupc                     U (       d  gUc  SS/nU R                  S5      R                  S5      n [        R                  R                  U 5      n [        R                  R	                  U 5      nX!;   $ )zThis checking is for the torch.load, this function may eval malicious code into memory

Args:
    model_dir: The local model_dir
    owner_group: The owner group to trust

Returns:
    bool: Whether the group can be trusted
Fiicdamo/\)rstripr   r   dirnamebasename)r   rf   groups      r   check_model_from_owner_grouprp      sc     fo  %,,T2I	*IGGY'Er   r,   )r$   r   typesr   typingr   r   r   rU   r   modelscope.metainfor   modelscope.utils.ast_utilsr	   modelscope.utils.import_utilsr
   r   r   loggerr(   boolr   r*   r1   r7   r<   r@   rM   r`   re   rp    r   r   <module>ry      s    	  & & ! % 0F F 

c 
hsm 
'}
15
EC E+
	2t  Xd^  c  &.sm 8@ FC C !)$  ;? C  .23i CG r   