
    5pj                        S r SSKJr  SSKrSSKJr  SSKJr  SSKJ	r	J
r
JrJrJrJrJrJr   " S	 S
\	5      rSS jr " S S\	5      r " S S\	5      rSSS jjr " S S\	5      rg)u6   ``ms cache`` group — scan and clear the local cache.    )annotationsN   )RepoTypeformat_size   )
CLICommand
SubParserserrorinfomake_apirender_tablesuccesswarnc                  6    \ rS rSrSr\SS j5       rSS jrSrg)	CacheCommand   z3Top-level dispatcher for the ``cache`` subcommands.c                    U R                  SSS9nUR                  SSS9nSUl        [        R	                  U5        [
        R	                  U5        [        R	                  U5        UR                  [        S9  g )	Ncachez!Inspect or clear the local cache.helpcache_actionACTION)destmetavarT)_command)	
add_parseradd_subparsersrequired
_CacheScanregister_CacheClear_CacheVerifyset_defaultsr   )
subparsersparsersubs      T/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/modelscope_hub/cli/cache.pyr!   CacheCommand.register   so    &&w5X&Y###JC S!c"\2    c                    [        U R                  SS 5      nUc  [        S5      eU" U R                  5      R                  5         g )N_cache_leafz-No cache action given. See `ms cache --help`.)getattrargs
SystemExitexecute)selfleafs     r(   r0   CacheCommand.execute   s9    tyy-6<LMMTYY!r*    Nr%   r
   returnNoner6   r7   )	__name__
__module____qualname____firstlineno____doc__staticmethodr!   r0   __static_attributes__r4   r*   r(   r   r      s    =	3 	3"r*   r   c                    [        U 5      $ )z'Format a byte count using IEC suffixes.r   )nums    r(   _human_sizerB   "   s    sr*   c                  2    \ rS rSr\SS j5       rSS jrSrg)r    '   c                v    U R                  SSS9nUR                  SSS S9  UR                  [        [        S9  g )Nscanz(Show cached repositories and disk usage.r   --cache-dir	cache_dirr   defaultr   r,   )r   add_argumentr$   r   r    )r%   ps     r(   r!   _CacheScan.register(   s:    !!&/Y!Z	};E	*Er*   c           
        [        U R                  5      nUR                  U R                  R                  5      n[	        SUR                  =(       d    S 35        [	        S[        UR                  5       SUR                   S35        UR                  (       d  g UR                   Vs/ s H  nUR                  =(       d    S[        UR                  SUR                  5      =(       d    SUR                  =(       d    SUR                  [        UR                  5      UR                  =(       d    S4PM     nn[	        S5        [	        [!        U/ SQS	95        g s  snf )
Nzcache_dir: -ztotal    : z across z repo(s)value )repo_id	repo_typerevisionfilessizepath)headers)r   r.   
scan_cacherH   r   rB   
total_sizetotal_reposreposrS   r-   rT   rU   nb_filessize_on_disk
local_pathr   )r1   apireportrrowss        r(   r0   _CacheScan.execute.   s   tyy!		 3 34{6++2s345{;v'8'89:(6CUCUBVV^_`|| \\

 " 		 SWakk:Ac

!c

ANN+# " 	 

 	RU	


s   +BEr4   Nr5   r8   r9   r:   r;   r<   r>   r!   r0   r?   r4   r*   r(   r    r    '   s    F F

r*   r    c                  2    \ rS rSr\SS j5       rSS jrSrg)r"   I   c                &   U R                  SSS9nUR                  SSS S9  UR                  SS[         Vs/ s H  o"R                  PM     snS S	9  UR                  S
SS S9  UR                  SSSSS9  UR	                  [
        [        S9  g s  snf )NclearzRemove cached files.r   rG   rH   rI   --repo-typerT   )r   choicesrJ   z	--repo-idrS   z--yesz-y
store_truezSkip the confirmation prompt.)actionr   rK   )r   rL   r   rQ   r$   r   r"   )r%   rM   ts      r(   r!   _CacheClear.registerJ   s    !!'0F!G	};E	&./hWWh/	 	 	
 	
{DA	w\@_`	+F 0s   Bc                   U R                   R                  (       a>  U R                   R                  (       d#  [        S[        R
                  S9  [        S5      eU R                   R                  =(       d    U R                   R                  =(       d    SnU R                   R                  (       d=  [        SU S35      R                  5       R                  5       nUS;  a  [        S5        g [        U R                   5      nUR                  U R                   R                  U R                   R                  U R                   R                  S	9n[        S
[!        U5       S35        g )Nz3Error: --repo-type is required when using --repo-id)filer   zthe entire cachezClear z? [y/N] )yyeszAborted.)rH   rT   rS   zFreed z from cache.)r.   rS   rT   printsysstderrr/   rt   inputstriplowerr   r   clear_cacherH   r   rB   )r1   scopeanswerra   freeds        r(   r0   _CacheClear.executeX   s    99TYY%8%8EZZ Q-		!!NTYY%8%8N<Nyy}}VE7(34::<BBDF\)Z tyy!ii))ii))II%%   

 	&U+,L9:r*   r4   Nr5   r8   rf   r4   r*   r(   r"   r"   I   s    G G;r*   r"   c                Z    SR                  U SU 5      nU[        U 5      U:  a  S-   $ S-   $ )z8Format a bounded path list for verification diagnostics.z, Nz...rR   )joinlen)pathslimitdetailss      r(   _format_pathsr   q   s4    iifu&Gs5zE1e::r::r*   c                  2    \ rS rSr\SS j5       rSS jrSrg)r#   w   c                   U R                  SSS9nUR                  SSS9  UR                  S[         Vs/ s H  o"R                  PM     snSS9  UR                  S	S S
9  UR	                  5       nUR                  SS S
9  UR                  SS S
9  UR                  SSS9  UR                  SSS9  UR                  [        [        S9  g s  snf )Nverifyz1Verify local files against Hub SHA-256 checksums.r   rS   z!Repository id in owner/name form.rk   model)rl   rJ   z
--revision)rJ   rG   z--local-dirz--fail-on-missing-filesrm   )rn   z--fail-on-extra-filesrK   )r   rL   r   rQ   add_mutually_exclusive_groupr$   r   r#   )r%   rM   ro   locations       r(   r!   _CacheVerify.registerx   s    !!(1d!e	y'JK	&./hWWh/ 	 	

 	
|T2113mT:mT:	0F	.|D	,G 0s   C	
c                   [        U R                  5      nUR                  U R                  R                  U R                  R                  U R                  R
                  U R                  R                  U R                  R                  S9n[        UR                  5      nUR                   HA  n[        UR                   SUR                   SUR                   SUR                   35        MC     UR                  (       ak  [!        UR                  5       S3n[#        UR                  5      nU R                  R$                  (       a  [        U SU 35        SnO['        U SU 35        UR(                  (       ak  [!        UR(                  5       S3n[#        UR(                  5      nU R                  R*                  (       a  [        U SU 35        SnO['        U SU 35        UR,                  (       a!  ['        [!        UR,                  5       S	35        U(       a  [/        S
5      e[1        SUR2                   SU R                  R                   SU R                  R                   SUR4                   S3	5        g )N)rU   rH   	local_dirz: expected z (z), got z# remote file(s) are missing locallyz: Tz2 local file(s) are absent from the remote revisionz2 file(s) have no SHA-256 metadata and were skippedr   z	Verified z file(s) for z 'z' at .)r   r.   verify_cacherS   rT   rU   rH   r   bool
mismatchesr   rX   expected	algorithmactualmissing_pathsr   r   fail_on_missing_filesr   extra_pathsfail_on_extra_filesunverified_pathsr/   r   checked_countverified_path)r1   ra   resultfailedmismatchmessager   s          r(   r0   _CacheVerify.execute   s   tyy!!!IIIIYY''ii))ii)) " 
 f''())HX]]O;x/@/@.AHDVDVCWW^_g_n_n^opq *V11233VWG#F$8$89Gyy..	G9-.y7),-V//011cdG#F$6$67Gyy,,	G9-.y7),-""C//011cdeQ-,,-]499;N;N:O P		!!"%(<(<'=Q@	
r*   r4   Nr5   r8   rf   r4   r*   r(   r#   r#   w   s    H H #
r*   r#   )rA   intr6   str)
   )r   z	list[str]r   r   r6   r   )r=   
__future__r   rv   	constantsr   utils.formatr   baser	   r
   r   r   r   r   r   r   r   rB   r    r"   r   r#   r4   r*   r(   <module>r      sY    < " 
   & \ \ \": ",

 
D%;* %;P;5
: 5
r*   