
    6pj                        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	  S SK
Jr  S SKJrJr  S SKJrJrJrJrJrJr  S SKJr  S SKJrJr  / S	QrS
 rSS jrS rSS jrS r S r!S r"\ RF                  S 5       r$S S jr%S r&S r'S r( " S S5      r)\ RF                  S 5       r*S r+S r,S r-S r.S r/\ RF                  S 5       r0g)!    N)Future)partial)Path)
MethodTypeSimpleNamespace)BinaryIODictIterableListOptionalUnion) DEFAULT_MODELSCOPE_DATA_ENDPOINT)
CommitInfoCommitOperation)
z*.binz*.safetensorsz*.pthz*.ptz*.h5z*.ckptz*.zipz*.onnxz*.tarz*.gzc                  8   / n / SQnSS/n/ SQn[         R                  R                  S5      b  SSKn[        R
                  S   nUR                  nU H  nSUR                  5       ;   a  M  Xg   nU H{  n	[        U V
s/ s H  n
[        R                  " X5      PM     sn
5      (       d  M:   [         R                  " S	U 3UR                  5      n[        X5      n	U R                  U	5        M}     M     [         R                  R                  S
5      b   SSKn[!        U5      nU Vs/ s H  oR#                  S5      (       a  M  UPM     nnU R%                  U VV
s/ s HG  n[        U V
s/ s H  n
[        R                  " U
U5      PM     sn
5      (       d  M;  [        UU5      PMI     sn
n5        [         R                  R                  S5      Gbx   SSKn[        R
                  S   n[)        US5      (       a  UR                  nU H  nSUR                  5       ;   a  M  Xg   nU H{  n	[        U V
s/ s H  n
[        R                  " X5      PM     sn
5      (       d  M:   [         R                  " S	U 3UR                  5      n[        X5      n	U R                  U	5        M}     M     U $ [!        U5      nU Vs/ s H  oR#                  S5      (       a  M  UPM     nnU R%                  U VV
s/ s HG  n[        U V
s/ s H  n
[        R                  " U
U5      PM     sn
5      (       d  M;  [        UU5      PMI     sn
n5         U $ U $ s  sn
f !    GM  = fs  snf s  sn
f s  sn
nf !    GN= fs  sn
f !    GMU  = fs  snf s  sn
f s  sn
nf !    U $ = f)z/Find all modules in transformers/peft/diffusers)zAuto.*zT5.*BitsAndBytesConfigGenerationConfigzAwq.*zGPTQ.*BatchFeaturezQwen.*zLlama.*zIntern.*z
Deepseek.*PretrainedConfigPreTrainedTokenizerPreTrainedModelPreTrainedTokenizerFastz.*PeftModel.*z.*Config)z^(?!TF|Flax).*Pipeline$z^(?!TF|Flax).*Autoencoder.*z^(?!TF|Flax).*Model$z^(?!TF|Flax).*Adapter$ImageProjectionz^(?!TF|Flax).*UNet$z^(?!TF|Flax).*Scheduler$transformersNr   dummy.peft__	diffusers_import_structure)	importlibutil	find_specr   sysmodulesr    loweranyre	fullmatchimport_module__name__getattrappendr   dir
startswithextendr   hasattr)all_imported_modulestransformers_include_namespeft_include_namesdiffusers_include_namesr   lazy_moduler    keyvaluesvaluenamemoduler   
attributesattrimports_importr   s                     \/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/modelscope/utils/hf_util/patcher.pyget_all_imported_modulesrA      s   "" *:6
 ~~/;kk.1'99$C#))+%&+F$>$>D T1$>  !*!8!8uI|'<'<"> ' 6,33E:  	 %$ ~~'3	 TJ!+!+??43H   !''6=)6=7<NF<NDBLLw/<NF B&g&g)  ~~,8#	 ++k2K{$788$/$A$A!,C#))+- .3F!',C ,CD !#T 9,C   %)2)@)@&'uIy/A/A*C(/(> 4 ; ;E B "(	 -8   !-
%/%/Tt7LDZ   %++AH-AHg$;$;D T73$;  2GK1-   CF)	4 % $
-7	B  s   ? M.A MM. *MMM(
.!M#
M(
M(
N 8 M6'A M; NN5N
!N	%
N
3N
M#M(
.M3;N	N
Nc                     S nSU ;   a  SSK Jn  US/nU$ SU ;   a  SSKJn  US/nU$ SU ;   a@  [	        Ub+  [        US5      (       a  UR                  R                  5       O/ 5      / S	Q-   nU$ S
U ;   a  / S	QnU$ )Nr   r   )GENERATION_CONFIG_NAME*.pyConfig)CONFIG_NAME	Tokenizervocab_files_names)zchat_template.jinjaz*.jsonrD   z*.txtz*.modelz
*.tiktoken	Processor)transformers.utilsrC   r   rF   listr1   rH   r8   )module_nameclsextra_allow_file_patternrC   rF   s        r@   _decide_allow_file_patternrO      s    #[(=$:G#D   $# 
[	 ,$/#9  $# 
	##'_.A!B!B !!((*HJ$LO
$
  $# 
	#$
  $#    c                     U S;   a  S$ U $ )z<Translate an HF revision string into one ModelScope accepts.)Nmainmaster revisions    r@   _ms_revisionrW      s    >18?x?rP   c                     SU R                  SS5      0nU R                  S5      nUb  X2S'   U R                  S5      n[        U[        5      (       a  XBS'   Ub  [        U5      US'   U$ )zMap transformers download kwargs onto ``snapshot_download`` arguments.

Forwards ``local_files_only``, ``cache_dir``, string ``token``, and an
optional revision (normalized via ``_ms_revision``).
local_files_onlyF	cache_dirtokenrV   )get
isinstancestrrW   )kwargsrV   download_kwargsrZ   r[   s        r@   _ms_download_kwargs_from_hfra      sx     	FJJ'95AO 

;'I'0$JJwE%#( &28&<
#rP   c           
         SSK Jn  S[        R                  " U5      R                  ;   nSnSnU(       a  SU;   a  US   nSnOU(       a  US   nUb`  [
        R                  R                  U5      (       d<  SSKJ	n  U" U40 [        X"R                  S5      S	9D6nU(       a  XS'   O	U4US
S -   nUnSU ;   a  U R                  SS
5      u  p[
        R                  R                  U	5      (       dU  [        X"R                  S5      S	9n
[        U 5      nUb  UU
S'   SU ;   d  SU ;   d  SU ;   a	  [        U
S'   SSKJ	n  U" U	40 U
D6n	U(       a  U(       a  XS'   OU	4US
S -   nOU	S-   U -   n U" U /UQ70 UD6$ )a   Wrapper that redirects dynamic-module downloads to ModelScope.

When a config's ``auto_map`` references another repo, transformers calls
``get_class_from_dynamic_module`` to fetch it.  This wrapper ensures that
fetch goes through ModelScope instead of HuggingFace.

Cross-repo ``auto_map`` entries use ``repo_id--module.Class``.  After
``snapshot_download``, the local cache path may itself contain ``--``
(modelscope_hub 0.1.x layout: ``models/{owner}--{name}/snapshots/...``).
Re-joining that path with ``--`` would make transformers'
``class_reference.split("--")`` raise ``ValueError``.  Instead, pass the
local directory as ``pretrained_model_name_or_path`` and the bare
``module.Class`` as ``class_reference`` so transformers takes the
``os.path.isdir`` branch.
r   )$origin_get_class_from_dynamic_modulepretrained_model_name_or_pathFNTsnapshot_downloadrV   rU      z--code_revisionallow_file_patternrE   rI   rG   ignore_file_pattern)!transformers.dynamic_module_utilsrc   inspect	signature
parametersospathexists
modelscoperf   ra   r\   splitrO   rj   )class_referenceargsr_   rc   has_pretrained_argpretrained_in_kwargsrd   rf   downloaded_pathrepo_idr`   rN   s               r@   _get_class_from_dynamic_modulerz      s     W'ABMM	N 
 !$(!*f4,2/-1)#' ,0G)%1GGNN#@AA0+):)J!79:  6E23#&ab1D(7%#2#8#8q#A ww~~g&&9O!<>O'A(!$'3,D  (*?*k_.LP[_nPn9L 564'C?CG $:A67{T!"X-
 &n>O/ :$ :28: :rP   c                      SSK Jn   [        U S5      (       d.  U R                  U l        [
        U l        SSKJn  [
        Ul        gg)zKGlobally patch ``get_class_from_dynamic_module`` to redirect to ModelScope.r   dynamic_module_utilsrc   configuration_autoN)r   r}   r1   get_class_from_dynamic_modulerc   rz   transformers.models.autor   r}   r   s     r@   _patch_dynamic_moduler     sA    1'9; ;DXDvDvA=[:?;Y8;rP   c                      SSK Jn   [        U S5      (       a5  U R                  U l        SSKJn  U R                  Ul        [        U S5        g g )Nr   r|   rc   r~   )r   r}   r1   rc   r   r   r   delattrr   s     r@   _unpatch_dynamic_moduler     sG    1#%KLL=Q=v=v:?;O;t;t8$&LM	 MrP   c               #      #    SSK Jn   [        U S5      (       a  Sv   g[        5          Sv   [	        5         g! [	        5         f = f7f)an  Temporarily patch ``get_class_from_dynamic_module`` for the duration of
the ``with`` block, unless an outer patch (e.g. ``patch_hub()``) is already
in effect.

This ensures that ``auto_map`` references inside a config are resolved via
ModelScope when loading through a modelscope-wrapped class, without
polluting the global transformers state for unrelated callers.
r   r|   rc   N)r   r}   r1   r   r   r|   s    r@   _dynamic_module_patch_scoper     s:      2#%KLL"!!   'A9 AAAc                   ^^   SS jmU4S jnU4S jnU4S jnU4S jn  SSSS[         [        [        [        [           4      S	[         [        [        [        [           4      4UU4S
 jjjn/ nU  GH:  mTb  [	        TS5      (       d  M  TR
                  nSUR                  5       ;   =(       d    SUR                  5       ;   n	U	(       d  0 n
OS[        0n
 [	        TS5      n[	        TS5      n[	        TS5      n[	        TS5      nU(       d  SUR                  5       ;   aR  U(       aK   U(       d(  U(       d!  U(       d  U(       d  UR                  T5        M  UR                  U" T40 U
D65        GM  U(       a  [	        TS5      (       d  [        R                  " TR                  5      R                  nSU;   =(       a    SU;   nTR                  Tl        U(       d  [        [        U40 U
D65      Tl        O[        [        U40 U
D65      Tl        U(       a<  [	        TS5      (       d+  TR                   Tl        [        [        U40 U
D65      Tl        U(       a<  [	        TS5      (       d+  TR$                  Tl        [        [        U40 U
D65      Tl        UR                  T5        GM=     U(       d
  [)        5         U$ !    GMX  = f!   UR                  T5         GMr  = f)zPatch all class to download from modelscope

Args:
    wrap: Wrap the class or monkey patch the original class

Returns:
    The classes after patched
c                 X   SSK Jn  UR                  SS 5      nS nU(       a  U S3n[        R                  R                  U 5      (       d]  [        UR                  SS 5      5      nUb  Un[        X7S9nU" U 4UUS.UD6n	U(       a  [        R                  R                  X5      n	U	$ U n	U	$ )Nr   re   	subfolderz/*rV   rU   rj   ri   )	rr   rf   popro   rp   rq   rW   ra   join)
rd   rj   ri   r_   rf   r   file_filterrV   r`   	model_dirs
             r@   get_model_dir._patch_pretrained_class.<locals>.get_model_dir6  s     	1JJ{D1	&Kr*Kww~~;<<#FJJz4$@AH&%0"9+O)-#$7#5# "	#I
 GGLL>	  6IrP   c                    > T" UUR                  SS5      UR                  SS5      40 UD6nU R                  R                  " X/UQ70 UD6$ )zPatch all from_pretrainedrj   Nri   r   _from_pretrained_origin__func__rM   rd   
model_argsr_   r   r   s        r@   #patch_pretrained_model_name_or_pathD_patch_pretrained_class.<locals>.patch_pretrained_model_name_or_pathP  k     ""?"(**-BD"I"(**-A4"H, %+,	 **33C K5?KCIK 	KrP   c                    > T" UUR                  SS5      UR                  SS5      40 UD6nU R                  R                  " X/UQ70 UD6$ )zPatch all get_config_dictrj   Nri   )r   _get_config_dict_originr   r   s        r@   patch_get_config_dict6_patch_pretrained_class.<locals>.patch_get_config_dictZ  r   rP   c                    > T" UUR                  SS5      UR                  SS5      40 UD6nU R                  R                  " XU/UQ70 UD6$ )zPatch all peft.from_pretrainedrj   Nri   r   )rM   modelmodel_idr   r_   r   r   s         r@   patch_peft_model_id4_patch_pretrained_class.<locals>.patch_peft_model_idd  sj    !("(**-BD"I"(**-A4"H, %+,	 **33C	 K5?KCIK 	KrP   c                    > T" UUR                  SS5      UR                  SS5      40 UD6nU R                  R                  " X40 UD6$ )zPatch all _get_peft_typerj   Nri   )r   _get_peft_type_originr   )rM   r   r_   r   r   s       r@   patch_get_peft_type4_patch_pretrained_class.<locals>.patch_get_peft_typem  sU    !("(**-BD"I"(**-A4"H, %+,	 ((11#KFKKrP   module_classr   rj   ri   c                   >^ ^^^ [         R                  UU4S j5       mUUU 4S jn " UUUUU 4S jST 5      n[        T S5      (       d  U?O<[        R
                  " T	R                  5      R                  nSU;   a  SU;   a  XEl        [        T S5      (       d  U?[        T S	5      (       d  U?[        T S
5      (       d  U?	T R                  Ul
        T R                  Ul        U$ )a  Get a custom wrapper class for  auto classes to download the models from the ModelScope hub
Args:
    module_class (`PreTrainedModel`): The actual module class
    ignore_file_pattern (`str` or `List`, *optional*, default to `None`):
        Any file pattern to be ignored, like exact file names or file extensions.
    allow_file_pattern (`str` or `List`, *optional*, default to `None`):
        Any file pattern to be included, like exact file names or file extensions.
Returns:
    The wrapped class
c              3      >#    SU ;  a  TU S'   SU ;  a  TU S'   U R                  S5       c  Ub  [        UR                  U5      nX0S'   S v   U R                  SS 5        U R                  SS 5        g 7f)Nri   rj   )r\   rO   r+   r   )r_   r   rM   rN   ri   rj   s       r@   file_pattern_contextP_patch_pretrained_class.<locals>.get_wrapped_class.<locals>.file_pattern_context  s     #61/A+,$F20C,-zz(*-126B6N+E ))3,0(/G+,JJ,d3JJ+T2s   A0A3c                    > T" U5         T" U4TTS.UD6nS S S 5        [        5          TR                  " U W/UQ70 UD6nS S S 5        U$ ! , (       d  f       N:= f! , (       d  f       W$ = f)N)r   rM   )r   from_pretrained)	r   r   r   r_   r   
module_objr   r   r   s	         r@   r   K_patch_pretrained_class.<locals>.get_wrapped_class.<locals>.from_pretrained  s    %f-)!-$ 		 . -.)999='1=5;=
 /  .- /. s   AA
A
A+c                      >^  \ rS rSr\UUU4S j5       r\UUUUU4S j5       r\UUUUU4S j5       r S	S\\	\
R                  4   S\4U 4S jjjrSrU =r$ )
H_patch_pretrained_class.<locals>.get_wrapped_class.<locals>.ClassWrapperi  c                 $  > T" UTU 5         T" U40 UD6nS S S 5        [        5          TR                  " W/UQ70 UD6nS S S 5        TR                  R                  S5      (       a  WWl        W$ ! , (       d  f       N`= f! , (       d  f       NH= f)N	AutoModel)r   r   r+   r/   r   )	rM   rd   r   r_   r   r   r   r   r   s	         r@   r   X_patch_pretrained_class.<locals>.get_wrapped_class.<locals>.ClassWrapper.from_pretrained  s     *&,D -.K !806!8I E 12!-!=!=!":$.":28":J 3  ((33K@@+4J(!! ED 32s   
A0B0
A>
Bc                    > T" UT	U 5         T" U4TTS.UD6nS S S 5        T	R                   " W40 UD6nU$ ! , (       d  f       N#= fNr   )_get_peft_type)
rM   r   r_   r   r   ri   r   r   rj   r   s
        r@   r   W_patch_pretrained_class.<locals>.get_wrapped_class.<locals>.ClassWrapper._get_peft_type  s^    )&,D - !",?+=!" !	!"I E *88MfM
!! EDs	   6
Ac                    > T" UT
U 5         T" U4T	TS.UD6nS S S 5        [        5          T
R                  " W/UQ70 UD6nS S S 5        U$ ! , (       d  f       N9= f! , (       d  f       W$ = fr   )r   get_config_dict)rM   rd   r   r_   r   r   ri   r   r   rj   r   s         r@   r   X_patch_pretrained_class.<locals>.get_wrapped_class.<locals>.ClassWrapper.get_config_dict  s     *&,D -5!",?+=!" !	!"I E 12!-!=!=!":$.":28":J 3 "! ED 32 "!s   AA
A
A,save_directorysafe_serializationc                   > UR                  SS5      nU(       a  SSKJn  SSKJn  SSKJn  UR                  S5      nUR                  SS 5      nUR                  S	UR                  [        R                  R                  5      S
   5      n	U" 5       n
U
R                  U5        U
R                  U	5        U" X5        [        TU ]<  " SUUSS.UD6  U(       a
  U" W	UWWS9  g g )Npush_to_hubFr   )r   HubApi)
Repositoryr[   commit_messagery   )r   r   r   )	repo_name
output_dirr   r[   rT   )r   modelscope.hub.push_to_hubr   modelscope.hub.apir   modelscope.hub.repositoryr   r\   rs   ro   rp   seplogincreate_reposupersave_pretrained)selfr   r   r_   r   r   r   r[   r   r   api	__class__s              r@   r   X_patch_pretrained_class.<locals>.get_wrapped_class.<locals>.ClassWrapper.save_pretrained  s     %jj>F9D"JJw/E%+ZZ0@$%GN &

!&,,RWW[[9"=!?I !(CIIe$OOI.~9' #1'9 % 	 "+#1'5#	% rP   rT   )T)r+   
__module____qualname____firstlineno__classmethodr   r   r   r   r^   ro   PathLikeboolr   __static_attributes____classcell__)r   ri   r   r   rj   r   s   @r@   ClassWrapperr     sv    " " 	" 	" 	" " " "" ,0$% %c2;;&6 7$% %)$% $%rP   r   r   r   r   r   r   r   )
contextlibcontextmanagerr1   r   rl   rm   rn   r   r   r   r+   r   )
r   rj   ri   r_   r   r   rn   r   r   vars
   ```    @r@   get_wrapped_class2_patch_pretrained_class.<locals>.get_wrapped_classu  s      
	"	"	3 
#	3	 P	% P	%< P	%d |%677, **3+>+>?JJJ*$z)A/>,|%566+|%677,|%677, , 5 5$0$=$=!rP   r+   	tokenizerconfigr   r   r   r   pipeliner   r   r   r   r   )NN)r   r   r^   r   r1   r+   r&   rj   r-   rl   rm   r   rn   r   r   r   r   r   r   r   r   )r2   wrapr   r   r   r   r   all_available_modulesr:   
skip_modelignore_file_pattern_kwargshas_from_pretrainedhas_get_peft_typehas_get_config_dicthas_save_pretrainedrn   is_peftr   r   s                    @@r@   _patch_pretrained_classr   ,  s    +/)-4KKKL DHBFU+U!)%T#Y*?!@U !)sDI~)> ?U Un #;gc:66|| DJJL0LH

4L
)+& &':*&	")#/@"A '-= >")#/@"A")#/@"A J$**,.3F2+4G 1:M)005)00)#L1KLN
 #733L,N ,N$..s/B/BCNN
!Z/LJ*4L.1.A.A+*5 C >"<>+?C' +6 3 >"<>+?C' !6M)N)N,/,>,>)%0/N3MN&P" #733L,N ,N.1.A.A+&11 :8:';# "((-y $F   g	2%,,S11s   0K	0-KK	KK)c                 h   S nU  H  nUc  M   [        US5      n[        US5      n[        US5      nU(       a  [        US5      (       a
  U" USS5        U(       a  [        US5      (       a
  U" USS5        U(       d  Mz  [        US5      (       d  M  U" USS5        M     [        5         g !    M  = f)Nc                     [        X5      n[        U[        5      (       a   [        X[	        UR
                  5      5        O[        XU5         [        X5        g ! [         a     g f = fN)r,   r]   r   setattrr   r   r   	Exception)r   r=   origin_attrorigins       r@   _restore+_unpatch_pretrained_class.<locals>._restoreY  sU    *fj))C{6??;<Cv&	C% 		s   A 
A'&A'r   r   r   r   r   r   )r1   r   )r2   r   r   r   r   r   s         r@   _unpatch_pretrained_classr   U  s    	 $;	")#/@"A '-= >")#/@"A 730I#J#JS+-FG.E!F!FS*,CD730I#J#JS+-FG $" 	s   $B,,B1c                       SSK Jn   SSKJn  [        U S5      (       a  gU R                  U l        SS jU l        g! [         a     gf = f)a  Monkey-patch the `kernels` library to route HF API calls to ModelScope.

Only `kernels.utils._get_hf_api` is replaced; every download, file check
and ref listing performed by `kernels` goes through `_MsKernelApi`, so
the kernel loading/variant/lock logic stays untouched.
r   utils_get_hf_apiN_get_hf_api_originc                     [        5       $ r   )_MsKernelApi)
user_agents    r@   <lambda> _patch_kernels.<locals>.<lambda>  s    rP   r   )kernelsr   kernels.utilsr   ImportErrorr1   r   )kernels_utilsr   s     r@   _patch_kernelsr
  x  sJ    2- }233'4'@'@M$ FM  s   < 
A	A	c                  p     SSK Jn   SSKJn  [        U SS 5      nUb	  X l        U ?g g ! [         a     g f = f)Nr   r   r   r   )r  r   r  r   r  r,   r   )r	  r   r   s      r@   _unpatch_kernelsr    sI    2- ]$8$?F$*!,   s   ( 
55c                   X    \ rS rSrSrSSSSSS.S jrSSS.S jrSS	.S
 jrS rS r	Sr
g)r  i  zMinimal `HfApi` look-alike that forwards to ModelScope. Only the
handful of methods that `kernels` actually calls are implemented.
NF)allow_patternsignore_patternsrZ   rV   rY   c          	      r    SSK Jn  UR                  S5      S:X  a  SUS'   U" U4[        U5      UUUUS.UD6$ )Nr   re   	repo_typekernelr   )rV   rZ   rY   r  r  )rr   rf   r\   rW   )	r   ry   r  r  rZ   rV   rY   r_   ms_snapshot_downloads	            r@   rf   _MsKernelApi.snapshot_download  sV     	I::k"h.")F;#!(+-)+  	rP   )path_in_reporV   c          	      "   SSK Jn  SSKJn  U" 5       R	                  U[        U5      USS9n/ nU HZ  n	U	R                  S5      S:w  a  M  U	R                  S5      =(       d    U	R                  S	5      n
UR                  U" U
S
S S95        M\     U$ )Nr   )
RepoFolderr   F)rV   root	recursiveTypetreer   Name )rp   oidlast_commit)huggingface_hub.hf_apir  r   r   get_model_filesrW   r\   r-   )r   ry   r  rV   r_   r  r   entriesfoldersentryrp   s              r@   list_repo_tree_MsKernelApi.list_repo_tree  s     	6-(**!(+	 + 
 Eyy F*99V$9		&(9DNN:4RTJK	 
 rP   rU   c                J    SSK Jn  U" 5       R                  X[        U5      S9$ )Nr   r   rU   )r   r   file_existsrW   )r   ry   filenamerV   r_   r   s         r@   r(  _MsKernelApi.file_exists  s+    -x##X(> $ @ 	@rP   c                     SSK Jn  SSKJn  U" 5       R	                  U5      u  pV[        U=(       d    /  Vs/ s H  nU" USU 3US9PM     snU=(       d    /  Vs/ s H  nU" USU 3US9PM     sn/ S9$ s  snf s  snf )Nr   )
GitRefInfor   zrefs/heads/)r:   reftarget_commitz
refs/tags/)branchestagsconverts)r   r,  r   r   get_model_branches_and_tagsr   )r   ry   r_   r,  r   r/  r0  ns           r@   list_repo_refs_MsKernelApi.list_repo_refs  s    5-==gF  #.b.(A QC'8J( *"*$A A3'7qI$ 	 		s   A6A;
c                     SSK Jn  U" S5      e)Nr   )EntryNotFoundErrorz2kernel-status.toml lookup is skipped on ModelScope)huggingface_hub.errorsr7  )r   ru   r_   r7  s       r@   hf_hub_download_MsKernelApi.hf_hub_download  s     	> @B 	BrP   rT   )r+   r   r   r   __doc__rf   r%  r(  r4  r9  r   rT   rP   r@   r  r    s@     *.*.$(#'+00 %) $	* :> @
"BrP   r  c               #      #    SSK Jn   [        U S5      (       a  Sv   g[        5          Sv   [	        5         g! [	        5         f = f7f)z~Apply `_patch_kernels` for the duration of the `with` block, unless an
outer patch (e.g. `patch_hub()`) is already in effect.
r   r   r   N)r  r   r1   r
  r  )r	  s    r@   _kernels_patch_scoper=    s9     
 /}233r   c                 0   ^  U 4S jnT =Ul         Ul        U$ )a   Return a wrapper around `kernels.<attr_name>` that scopes the ModelScope
patch on `kernels.utils._get_hf_api` to the call itself, so
`from kernels import <attr_name>` stays on HuggingFace unless the user
explicitly calls `patch_hub()` / `patch_context()`.
c                  z   > SS K n[        5          [        UT5      " U 0 UD6sS S S 5        $ ! , (       d  f       g = f)Nr   )r  r=  r,   )ru   r_   r  	attr_names      r@   _wrapped(_wrap_kernels_callable.<locals>._wrapped  s,    !#7I.?? $##s   ,
:)r+   r   )r@  rA  s   ` r@   _wrap_kernels_callablerC    s     @
 1:9H-OrP   c                    ^ SS K n SSK Jn  SSKJn  SSKJn  SSKJn  U" 5       mS S S S.S[        S[        S	[        [           S
[        [           S[        [        [        S 4   4
U4S jjjnS S S S S S SS.S[        S[        S[        [           S	[        [           S
[        [           S[        [        [        S 4   S[        [        [        S 4   S[        [        [        S 4   S[        4U4S jjjnS7S[        [        [        S 4   S[        4S jjnS SS.S[        S[        [        [        S 4   S[        SS4S jjnUS S S S SS S.S[        S[        [        [        4   S[        [           S[        [           S[        [           S[        [        [        S 4   S
[        [           S [        [        [        [           [        4      4S! jj5       n	SS"KJn
  US U
S S S#.S$[        [        [        [         ["        4   S[        S[        S[        [        [        S 4   S
[        [           S[        [           S[        [           4S% jj5       nUS S S U
S&.S[        S'[$        [&           S[        S[        [           S[        [        [        S 4   S	[        [           S
[        [           S[        [(        [*        [(           4   4S( jj5       n   S8S)[        [        [        4   S	[        [           S[        [           S*[        4S+ jjnSS,K Jn  [/        UR0                  S-5      (       d  UR0                  R2                  UR0                  l        S. UR0                  l        UR0                  R6                  UR0                  l        [;        XR0                  5      UR0                  l        [/        US/5      (       d1  U R<                  R>                  Ul         X`l        X`R<                  l        [/        US05      (       dM  URB                  Ul"        [;        XR5      Ul!        URB                  U l!        URB                  U R                  l!        [/        US15      (       dM  URF                  Ul$        [;        Xr5      Ul#        URF                  U l#        URF                  U R                  l#        [/        US25      (       dd  SS3K%J&n  URN                  Ul(        [;        X5      Ul'        URN                  U l'        URN                  U R                  l'        URN                  Ul'        [/        US45      (       dM  URR                  Ul*        [;        X5      Ul)        URR                  U l)        URR                  U R                  l)        [/        US55      (       d^  URV                  Ul,        [;        X5      Ul+        URV                  U l+        URV                  U R                  l+        URV                  Ul+        [/        US65      (       de  URZ                  Ul.        [;        X5      Ul-        URZ                  U l-        URZ                  U R                  l-        SS3K%J&n  URZ                  Ul-        g g )9Nr   hf_api)r   )future_compatible)
get_logger)r  rV   r[   ry   r)  r  rV   r[   c                   > Ub  TR                  S5        SSKJn  U" 5       nUR                  U5        Ub  US:X  a  SnUR	                  XUS9$ )z!Patch huggingface_hub.file_existsz[The passed in repo_type will not be used in modelscope. Now only model repo can be queried.r   r   rR   rS   rU   )warningr   r   r   r(  )	r   ry   r)  r  rV   r[   r   r   loggers	           r@   _file_exists _patch_hub.<locals>._file_exists  sW      NNm 	.h		%x61Hw8DDrP   F)r   r  rV   rZ   	local_dirr[   rY   r   rZ   rN  rY   c          	      @  > [        U	5      S:  a  TR                  S5        US;   d   SU S35       eUS;   a  SSKJn
  OSSKJn
  SS	KJn  U" 5       nUR                  U5        Ub  US
:X  a  SnU
" U U(       a  [        R                  R                  X!5      OUUUUUS9$ )z%Patch huggingface_hub.hf_hub_downloadr   zThe passed in library_name,library_version,user_agent,force_download,proxiesetag_timeout,headers,endpoint will not be used in modelscope.)Nr   datasetz
repo_type=z is not supported in ModelScope)Nr   model_file_downloaddataset_file_downloadr   rR   rS   )	file_pathrZ   rN  rY   rV   )lenrJ  modelscope.hub.file_downloadrR  rT  rr   r   r   ro   rp   r   )ry   r)  r   r  rV   rZ   rN  r[   rY   r_   file_downloadr   r   rK  s                r@   _file_download"_patch_hub.<locals>._file_download!  s     v;?NN23    	P$YK/NO	P  'Y[%h		%x61H ggll97&- 	rP   returnc                     SSK Jn  SSK Jn  U" 5       nUR                  U5        SUR	                  5       S   =(       d    S0$ )Nr   )ModelScopeConfigr   r:   unknown)r   r]  r   r   get_user_info)r   r[   r]  r   r   s        r@   _whoami_patch_hub.<locals>._whoamiG  s:    7-h		%(668;HyIIrP   )r[   privaterb  RepoUrlc                x    SSK Jn  U" 5       nU(       a  SOSnUR                  " U4X'S.UD6nSSKJn	  U	" USUS9$ )	a  
Create a new repository on the hub.

Args:
    repo_id: The ID of the repository to create.
    token: The authentication token to use.
    private: Whether the repository should be private.
    **kwargs: Additional arguments.

Returns:
    RepoUrl: The URL of the created repository.
r   r   rb  public)r[   
visibility)rc  r   )urlr  ry   )r   r   r   modelscope.utils.repo_utilsrc  )
r   ry   r[   rb  r_   r   r   rf  repo_urlrc  s
             r@   r   _patch_hub.<locals>.create_repoN  sM    $ 	.h")Yx
??C C;AC78wHHrP   rS   )r  r   commit_descriptionr[   rV   r  folder_pathr  r   rk  r  c          
      n    SSK Jn
  Ub  US:X  a  SnU
" UUUUUUUS9  SSKJn  U" [         SU S3UUS S	9$ )
Nr   _push_files_to_hubrR   rS   )path_or_fileobjr  ry   r   rk  rV   r[   )r   z/models/z/files)
commit_urlr   rk  r  )r   ro  rh  r   r   )r   ry   rl  r  r   rk  r[   rV   r  r_   ro  r   s               r@   upload_folder!_patch_hub.<locals>.upload_folderh  sc     	Bx61H'%)1	 	;/0	H)1
 	
rP   )DEFAULT_REPOSITORY_REVISION)r[   rV   r   rk  rp  c          	      <    Ub  US:X  a  SnSSK Jn	  U	" XX4XVU5        g )NrR   rS   r   rn  )r   ro  )
r   rp  r  ry   r[   rV   r   rk  r_   ro  s
             r@   upload_file_patch_hub.<locals>.upload_file  s,     x61HA?'#5G	IrP   )rk  r[   r  rV   
operationsc          
      @   SSK Jn	  U	" 5       n
[        U Vs/ s H  nSUR                  R                  ;  PM     sn5      (       a  [        S5      eUb  US:X  a  SnU Vs/ s H  oR                  PM     nnU
R                  UUUUUUU=(       d    SS9  g s  snf s  snf )	Nr   r   Addz<ModelScope create_commit only support Add operation for now.rR   rS   r   )ry   rl  r   rk  r[   rV   r  )r   r   r'   r   r+   
ValueErrorrp  rr  )r   ry   rx  r   rk  r[   r  rV   r_   r   r   op	all_filess                r@   create_commit!_patch_hub.<locals>.create_commit  s     	.hZHZrR\\222ZHIINP Px61H2<=*B''*	=!)1*7 	 	, I
 >s   #B Brepo_id_or_pathignore_metadata_errorsc                    SSK Jn  U" 5       nUR                  U5        [        R                  R                  U5      (       a  UnO=US:X  d  Uc  SSKJn  U" US5      nO$US:X  a  SSKJn	  U	" US5      nO[        SU 35      e[        US	5       n
U " U
R                  5       US
9n[        UR                  S5      (       d  / UR                  l        UsS S S 5        $ ! , (       d  f       g = f)Nr   r   r   rQ  z	README.mdrP  rS  z5repo_type should be `model` or `dataset`, but now is r)r  r0  )r   r   r   ro   rp   rq   rr   rR  rT  r{  openreadr1   datar0  )rM   r  r  r[   r  r   r   rU  rR  rT  f	repo_cards               r@   load_patch_hub.<locals>.load  s     	.h		%77>>/**'I'!Y%66+O[II)#8-o{KIG	{S  )S!Q1GII9>>622&(	# "!!s   AC
C*repocard_validate_originc                      g r   rT   )ru   r_   s     r@   r  _patch_hub.<locals>.<lambda>  s    TrP   _hf_hub_download_origin_file_exists_origin_whoami_origin_create_repo_originhub_upload_folder_origin_upload_file_origin_create_commit_originr   )NNF)/huggingface_hubrF  r   r   rG  rr   rH  r^   r   r   r   r   r	   r   modelscope.utils.constantrt  bytesr   r
   r   r   r   r  r1   RepoCardvalidater  r  _load_originr   rX  r9  r  r(  r  whoamir  rJ   r  r   r  rr  r  rv  r  r~  r  )r  rF  r   rG  rH  rL  rY  r`  r   rr  rt  rv  r~  r  r  r  rK  s                   @r@   
_patch_hubr    sC   &*8%\F $("&(,EE E
 C=E 3-E S$_%E E0 372615;?;?7;05$ $!$$ #+3-$ #+3-	$
 "*#$ #(T4"8$ #(T4"8$ $D#tO4$ *.$ $LJU4d?3 Jt J 59$)	I I !dD1I "	I
 "+I4  '+(,,0(,"*;?
 
 39%	

 sm
 !
 %SM
 S$_%
 3-
 "%S	3"78
 
B F )-"=(,,0I sD%9:I 	I
 I S$_%I 3-I !I %SMI I$  -1(,#'"=,, _-,
 , %SM, S$_%, C=, 3-, 
z6*--	., ,@ $(#',sDy) C= }	
 !%> )8$$&899-5->->-G-G*%A")1):):)?)?&!+D2C2C!D6455)8)F)F)V)V&*8'8F%%56011%+%7%7"':&,&8&8#-3-?-?*6+,, &"70!'(.%6011*%+%7%7"'9&,&8&8#-3-?-?* ,,6233'-';';$)-=(.(<(<%/5/C/C,6011%+%7%7"'9&,&8&8#-3-?-?*%116233'-';';$)-=(.(<(<%/5/C/C,*"00 4rP   c                     SS K n SSK Jn  SSK Jn  [        UR                  S5      (       a;  UR                  R
                  UR                  l        [        UR                  S5        [        UR                  S5      (       a;  UR                  R                  UR                  l	        [        UR                  S5        [        US5      (       aS  UR                  U R                  l        UR                  U l        UR                  U R                  l        [        US5        [        US5      (       aI  UR                  Ul        UR                  U l        UR                  U R                  l        [        US5        [        US5      (       aI  UR                  Ul        UR                   U l        UR                   U R                  l        [        US5        [        US	5      (       a`  SS
KJn  UR&                  Ul        UR(                  U l        UR(                  U R                  l        UR(                  Ul        [        US	5        [        US5      (       aI  UR*                  Ul        UR,                  U l        UR,                  U R                  l        [        US5        [        US5      (       aZ  UR.                  Ul        UR0                  U l        UR0                  U R                  l        UR0                  Ul        [        US5        [        US5      (       aa  UR2                  Ul        UR4                  U l        UR4                  U R                  l        SS
KJn  UR4                  Ul        [        US5        g g )Nr   rE  r  r  r  r  r  r  r  r  r  r  r  )r  rF  r  r1   r  r  r  r   r  r  r  rX  r9  r  r(  r  r  rJ   r  r  r   r  rr  r  rv  r  r~  )r  rF  r  r  s       r@   _unpatch_hubr    s   &(x  "455%-%6%6%G%G"!!#56x  .11!)!2!2!?!?!!>2v0118>8V8V%%5*0*H*H'8>8V8V%%512v,--#77&,&8&8#-3-?-?*-.v'((--!'(.%()v,--*#77&,&8&8#-3-?-?* ,,-.v.//%;;(.(<(<%/5/C/C,/0v,--#77&,&8&8#-3-?-?*%11-.v.//%;;(.(<(<%/5/C/C,*"00/0 0rP   c                  R    [        5         [        5         [        [        5       5        g r   )r  r
  r   rA   rT   rP   r@   	patch_hubr  U  s    L467rP   c                  R    [        [        5       5        [        5         [        5         g r   )r   rA   r  r  rT   rP   r@   unpatch_hubr  [  s    689NrP   c               #   \   #    [        5          S v   [        5         g ! [        5         f = f7fr   )r  r  rT   rP   r@   patch_contextr  a  s     Ks   , ,),r   )F)1r   r!   rl   ro   r(   r$   asyncior   	functoolsr   pathlibr   typesr   r   typingr   r	   r
   r   r   r   modelscope.hub.constantsr   rh  r   r   rj   rA   rO   rW   ra   rz   r   r   r   r   r   r   r
  r  r  r=  rC  r  r  r  r  r  rT   rP   r@   <module>r     s       	 	 
    - B B E C e P$.@
(I:XZN " "(f!R	 FG$	-KB KB\   R1j91x8  rP   