
    QЦiXm                     v   S 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JrJrJrJrJrJ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Jr  SS
K J!r!J"r"  SSK#J$r$J%r%J&r&J'r'J(r(J)r)J*r*  \*" SS9r+\" SS9 " S S5      5       r,\RZ                  " S5      r.1 Skr/1 Skr01 Skr1\RZ                  " S5      r2SSSSS.r30 r4\5" \15       H  r6\6\4\6'   \6 S3\4\6 S3'   \6 S3\4\6 S3'   M      \
" S\4\7\8S 9r9\" SS9 " S! S"5      5       r:\\\\   4   r;\\\<\7   4   r=S#\\\<\   4   S$\:4S% jr>S#\\\<\   4   S$S4S& jr?S'\S$\\\7\4   \\7\\\4   4   4   4S( jr@S'\S)\AS$\\\;   \=4   4S* jrBS+\7S,\=S$\\\\   \C/\A4   4S- jrDS.\\;   S)\AS,\=S$\\\7\4      4S/ jrES.\\;   S)\AS,\=S$S4S0 jrFS.\\;   S)\AS,\=S$S4S1 jrGS2\\C   S3\7S4\CS$\A4S5 jrHS6\7S$\I\\;/\I\S74   4   \A4   4S8 jrJS'\S9\K\7   S$\,4S: jrL\+R                  / S;QS<9SS=S\$R                  S=SS4S>\\\7   \R                  " S?S94   S@\\A\R                  " SAS94   SB\\\K\7      \R                  " SCSDSES94   SF\\$\R                  " SGS94   SH\\A\R                  " SISJSKS94   SL\\\9   \R                  " SMS94   SN\\\P   \R                  " SOS94   S$S4SP jj5       rQ\+R                  / SQQS<9   SlS9\\K\7   \R                  " SRS94   S>\\\7   \R                  " S?S94   SS\\A\R                  " STSUSVS94   SW\\A\R                  " SXS94   S$S4
SY jj5       rS\+R                  SZS[/S<9   SlS>\\\7   \R                  " S?S94   SS\\A\R                  " STSUSVS94   SW\\A\R                  " SXS94   S$S4S\ jj5       rT\+R                  / S]QS<9\&R                  SSSS=S=S4S^\%S_\&S`\'S>\\\7   \R                  " SaS94   Sb\\\7   \R                  " ScS94   Sd\\A\R                  " SeSfS94   Sg\\A\R                  " ShSiS94   Sj\(S$S4Sk jj5       rVg)mzHContains the 'hf cache' command group with cache management subcommands.    N)defaultdict)	dataclass)Enum)	AnnotatedAnyCallableDictListMappingOptionalTuple)CLIError   )ANSICachedRepoInfoCachedRevisionInfoCacheNotFoundHFCacheInfo_format_sizescan_cache_dirtabulate)parse_duration
parse_size   )OutputFormat	RepoIdArgRepoTypeOptRevisionOptTokenOpt
get_hf_apityper_factoryzManage local cache directory.)helpT)frozenc                   T    \ rS rSr% \\   \S'   \\\\	   4   \S'   \
\S4   \S'   Srg)_DeletionResolution:   	revisionsselected.missing N)__name__
__module____qualname____firstlineno__	frozensetstr__annotations__dictr   r   tuple__static_attributes__r*       X/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/huggingface_hub/cli/cache.pyr%   r%   :   s0    ~>9-?#@@AA38_r5   r%   zA^(?P<key>[a-zA-Z_]+)\s*(?P<op>==|!=|>=|<=|>|<|=)\s*(?P<value>.+)$>   <=>!=<=>=>   refssizetypeaccessedmodified>   namer>   r@   rA   z.^(?P<key>[a-zA-Z_]+)(?::(?P<order>asc|desc))?$descasc)r@   rA   r>   rB   z:asc_ascz:desc_descSortOptions)r?   modulec                   8    \ rS rSr% Sr\\S'   \\S'   \\S'   Srg)CacheDeletionCountsY   z>Simple counters summarizing cache deletions for CLI messaging.
repo_countpartial_revision_counttotal_revision_countr*   N)r+   r,   r-   r.   __doc__intr1   r4   r*   r5   r6   rJ   rJ   Y   s    HOr5   rJ   selected_by_reporeturnc                     SnSnSnU R                  5        HJ  u  pEU[        U5      -  n[        U5      [        UR                  5      :X  d  M7  US-  nU[        U5      -  nML     X#-
  n[        XU5      $ )z(Summarize deletions across repositories.r   r   )itemslenr'   rJ   )rQ   rL   total_revisionsrevisions_in_full_reposrepor'   rM   s          r6   summarize_deletionsrY   f   s|     JO+1133y>)y>S00!OJ#s9~5#	 4 -Fz?SSr5   c           
         [        U R                  5       S S9 H  nUR                   SUR                   3n[        X   S S9n[	        U5      [	        UR
                  5      :X  a  [        SU S35        M^  [        SU S35        U HX  nSR                  [        UR                  5      5      =(       d    S	n[        S
UR                   SU SUR                   35        MZ     M     g)zBPretty-print selected cache revisions during confirmation prompts.c                 N    U R                   U R                  R                  5       4$ N	repo_typerepo_idlowerrX   s    r6   <lambda>0print_cache_selected_revisions.<locals>.<lambda>z   s    $..RVR^R^RdRdRfAgr5   key/c                     U R                   $ r\   commit_hashrevs    r6   rb   rc   |       3??r5     - z (entire repo): z
(detached)z      z [z] N)sortedkeysr^   r_   rU   r'   printjoinr=   ri   size_on_disk_str)rQ   rX   repo_keyr'   revisionr=   s         r6   print_cache_selected_revisionsrw   x   s    ',,.4ghnn%Qt||n5+17RS	y>S00D
.12XJa !!H88F8==12BlDF8//04&8;T;T:UVW " ir5   hf_cache_infoc                     0 n0 nU R                    HQ  nUR                  R                  5       nX1U'   UR                   H   nX54X%R                  R                  5       '   M"     MS     X4$ )zPCreate lookup tables so CLI commands can resolve repo ids and revisions quickly.)reposcache_idr`   r'   ri   )rx   repo_lookuprevision_lookuprX   ru   rv   s         r6   build_cache_indexr~      sk     .0KLNO##==&&( $HH=A<LO006689 ' $
 ''r5   include_revisionsc          	         / n0 n[        U R                  S S9nU H  n[        UR                   VVs1 s H  ofR                    H  owiM     M     snn5      X5'   U(       a0  [        UR                  S S9 H  nUR                  XV45        M     Mv  UR                  US45        M     U(       a  UR                  S S9  X#4$ UR                  S S9  X#4$ s  snnf )z;Flatten cache metadata into rows consumed by `hf cache ls`.c                 N    U R                   U R                  R                  5       4$ r\   r]   ra   s    r6   rb   'collect_cache_entries.<locals>.<lambda>   s    QUQ]Q]QcQcQe@fr5   rd   c                     U R                   $ r\   rh   rj   s    r6   rb   r      rl   r5   Nc                 P    U S   R                   U S   b  U S   R                  4$ S4$ )Nr   r    )r{   ri   entrys    r6   rb   r      s2    a!!(-a(<a$$BDr5   c                      U S   R                   $ )Nr   )r{   r   s    r6   rb   r      s    uQx'8'8r5   )rp   rz   r/   r'   r=   appendsort)rx   r   entriesrepo_refs_mapsorted_reposrX   rv   refs           r6   collect_cache_entriesr      s     !#G!#M---3fgL'T^^(e^WdWdPSWd^(ef"4>>7RS/0 T NND$<(   	 	
 !! 	89!! )fs   Cexprr   c           
        ^^^^^	^
^ [         R                  U R                  5       5      nU(       d  [        SU  S35      eUR	                  S5      R                  5       mUR	                  S5      mUR	                  S5      R                  5       mT[        ;  a"  [        ST SU  S[        [        5       S	35      eT[        ;  a"  [        S
T SU  S[        [        5       S	35      eTS:X  a  [        T5      m
UU
4S j$ TS;   aD  [        TR                  5       5      m	S[        S[        [           S[        S[        4UUU	4S jjnU$ TS:X  aN  TR                  5       mTS:w  a  [        ST S35      eS[        S[        [           S[        S[        4U4S jjnU$ TS:w  a  [        ST S	35      eS[        S[        [           S[        S[        4UU4S jjnU$ )zqConvert a `hf cache ls` filter expression into the yes/no test we apply to each cache entry before displaying it.zInvalid filter expression: 'z'.re   opvaluezUnsupported operator 'z' in filter ''. Must be one of .zUnsupported filter key '' in 'r>   c                 \   > [        Ub  UR                  TT5      $ U R                  TT5      $ r\   )_compare_numericsize_on_disk)rX   rv   _r   size_thresholds      r6   rb   &compile_cache_filter.<locals>.<lambda>   s3    )9%-%9H!!*
?C?P?P*
r5   >   r@   rA   rX   rv   nowrR   c                    > TS:X  a  U R                   OUb  UR                  OU R                  nUc  g[        X#-
  TT5      $ )Nr@   F)last_accessedlast_modifiedr   )rX   rv   r   	timestampre   r   secondss       r6   _time_filter*compile_cache_filter.<locals>._time_filter   sU     *$ "" ' ++''   #CORAAr5   r?   r8   z/Only '=' is supported for 'type' filters. Got 'r   c                 >   > U R                   R                  5       T:H  $ r\   )r^   r`   )rX   rv   r   expecteds      r6   _type_filter*compile_cache_filter.<locals>._type_filter   s    >>'')X55r5   z.Only '=' is supported for 'refs' filters. Got c                    > Ub  UR                   OTR                  U [        5       5      nTR                  5       U Vs/ s H  oDR                  5       PM     sn;   $ s  snf r\   )r=   getr/   r`   )rX   rv   r   r=   r   r   	value_raws        r6   _refs_filter*compile_cache_filter.<locals>._refs_filter   sM    $,$88==m>O>OPTV_Va>bD??$(E(EEE(Es   A)_FILTER_PATTERNmatchstrip
ValueErrorgroupr`   _ALLOWED_OPERATORSlist_FILTER_KEYSr   r   r   r   r   floatbool)r   r   r   r   r   r   r   re   r   r   r   r   s    `    @@@@@@r6   compile_cache_filterr      s    !!$**,/E7vR@AA
++e

"
"
$C	T	BG$**,I	##1"]4&HZ[_`r[sZttuvww
,3C5tfDVW[\hWiVjjklmm
f}#I.
 	
 && !23
	B~ 
	BBT9U 
	B\a 
	Bfj 
	B 
	B 
f}??$9NrdRTUVV	6~ 	6BT9U 	6Z_ 	6dh 	6  9MbTQRSTT	F~ 	FBT9U 	FZ_ 	Fdh 	F 	F r5   r   c                   / nU  H  u  pEU(       as  Uc  M  UR                   UR                  UR                  [        UR                  5      UR
                  UR                  UR                  [        UR                  5      S.nO\UR                   UR                  UR
                  UR                  UR                  [        UR                  U[        5       5      5      S.nUR                  U5        M     U$ )zGNormalize cache entries into serializable records for JSON/CSV exports.)r_   r^   rv   snapshot_pathr   r   r   r=   )r_   r^   r   r   r   r=   )r_   r^   ri   r0   r   r   r   r   rp   r=   r   r/   r   )r   r   r   payloadrX   rv   records          r6   _build_cache_export_payloadr      s     %'G!<<!^^$00!$X%;%;!< ( 5 5!%!3!3!)!7!7x}}-	&F  <<!^^ $ 1 1!%!3!3!%!3!3}00y{CDF 	v/ "0 Nr5   c                   U (       d  U(       a  SOSn[        U5        gU(       a~  / SQnU  VVs/ s Hj  u  pVUc  M
  UR                  UR                  UR                  R	                  S5      UR
                  SR                  [        UR                  5      5      /PMl     nnnO/ SQnU  VVs/ s H|  u  pXUR                  UR                  R	                  S5      UR                  =(       d    SUR
                  SR                  [        UR                  U[        5       5      5      5      /PM~     nnn[        [        XtS	95        U  VVs1 s H  u  pXUiM	     n	nn[        U	5      n
U(       a%  [        S
 U  5       5      n[        S U  5       5      nO$[        S U	 5       5      n[        S U	 5       5      nSU
 SU S[        U5       S3n[        [         R"                  " U5      5        gs  snnf s  snnf s  snnf )zBRender cache entries as a table and show a human-readable summary.zNo cached revisions found.zNo cached repositories found.N)IDREVISIONSIZELAST_MODIFIEDREFS   ro   )r   r   LAST_ACCESSEDr   r   r   )headersc              3   4   #    U  H  u  pUc  M
  Sv   M     g 7f)Nr   r*   .0r   rv   s      r6   	<genexpr>,print_cache_entries_table.<locals>.<genexpr>;  s     R';1XQQ's   		c              3   H   #    U  H  u  pUc  M
  UR                   v   M     g 7fr\   r   r   s      r6   r   r   <  s     b';1X...'s   	""c              3   L   #    U  H  n[        UR                  5      v   M     g 7fr\   )rU   r'   r   rX   s     r6   r   r   >  s     J\TS00\s   "$c              3   8   #    U  H  oR                   v   M     g 7fr\   r   r   s     r6   r   r   ?  s     D|t**|   z
Found z repo(s) for a total of z revision(s) and z	 on disk.)rr   r{   ri   rt   rjustlast_modified_strrs   rp   r=   last_accessed_strr   r/   r   rU   sumr   r   bold)r   r   r   messager   rX   rv   
table_rowsr   unique_reposrL   revision_count
total_sizesummarys                 r6   print_cache_entries_tabler     s    2C.IhgE #*

 #*$$))//2**./ #* 	 


 K #	
 # %%++A.&&,"&& 1 1$	 DEF # 	 	
 
(:
/0(/0WTDL0\"JR'RRb'bb
J\JJD|DD
$<^<LL]^jku^v]w  xA  BG	$))G
I

	
 1s   	G+A$G+-BG1
G7c                    [        XUS9n[        R                  " U[        R                  SS9  [        R                  R                  S5        g)z7Dump cache entries as JSON for scripting or automation.r   r   r   )indent
N)r   jsondumpsysstdoutwrite)r   r   r   r   s       r6   print_cache_entries_jsonr   E  s7     *'fstGIIgszz!,JJTr5   leftr   rightc                 b    U c  gX:H  X:g  X:  X:  X:  X:*  S.nX;  a  [        SU 35      eX1   $ )z)Evaluate numeric comparisons for filters.F)r8   r:   r9   r7   r<   r;   z)Unsupported numeric comparison operator: )r   )r   r   r   comparisonss       r6   r   r   N  sT    | ]m\\mmK 
DRDIJJ?r5   	sort_expr.c           
        ^ [         R                  U R                  5       R                  5       5      nU(       d  [	        SU  S35      eUR                  S5      R                  5       mUR                  S5      nT[        ;  a"  [	        ST SU  S[        [        5       S35      eU(       a  UO[        T   nUS	:H  nS
[        S[        [        S4   4U4S jjnXT4$ )zConvert a `hf cache ls` sort expression into a key function for sorting entries.

Returns:
    A tuple of (key_function, reverse_flag) where reverse_flag indicates whether
    to sort in descending order (True) or ascending order (False).
zInvalid sort expression: 'z5'. Expected format: 'key' or 'key:asc' or 'key:desc'.re   orderzUnsupported sort key 'r   r   r   rC   r   rR   .c                   > U u  pTS:X  a  UR                   R                  5       nU4$ TS:X  a!  Ub  UR                  nU4$ UR                  nU4$ TS:X  a!  UR                  b  UR                  nU4$ SnU4$ TS:X  a?  Ub  UR                  b  UR                  OSnU4$ UR                  b  UR                  OSnU4$ [        ST 35      e)NrB   r>   r@   g        rA   zUnsupported sort key: )r{   r`   r   r   r   r   )r   rX   rv   r   re   s       r6   	_sort_key%compile_cache_sort.<locals>._sort_keyw  s    &=,,.E8O&=-5-AH))E8O HLGXGXE8O* +/*<*<*HD&&E8O ORE8O*#2:2H2H2T..Z] 8O /3.@.@.L**RU8O 1#788r5   )_SORT_PATTERNr   r   r`   r   r   
_SORT_KEYSr   _SORT_DEFAULT_ORDER
CacheEntryr3   r   )r   r   explicit_orderr   reverser   re   s         @r6   compile_cache_sortr   b  s     	 1 7 7 9:E5i[@uvww
++e

"
"
$C[[)N
*1#fYKGYZ^_iZjYkklmnn -N2Ec2JEvoG9 9c3h 9< r5   targetsc                    [        U 5      u  p#[        [        5      n[        5       n/ nU GH  nUR                  5       nU(       d  M  UR	                  5       n	[
        R                  " SU	5      (       a[  UR                  U	5      n
U
c  UR                  U5        Mp  U
u  pXK   R                  U5        UR                  UR                  5        M  UR                  U	5      nUc  UR                  U5        M  UR                   H1  nXM   R                  U5        UR                  UR                  5        M3     GM     UR                  5        VVs0 s H  u  pU[        U5      _M     nnn[        [        U5      U[        U5      S9$ s  snnf )z8Resolve the deletion targets into a deletion resolution.z[0-9a-fA-F]{40}r'   r(   r)   )r~   r   setr   r`   re	fullmatchr   r   addri   r'   rT   r/   r%   r3   )rx   r   r|   r}   r(   r'   r)   
raw_targettargetloweredr   rX   rv   matched_reporevsfrozen_selecteds                   r6   _resolve_deletion_targetsr    sW   #4]#C K>I#>NH%IG
!!#,,.<<*G44#''0E}z*"NDNx(MM(../"w/NN:&$..H"&&x0MM(../ /+ 2 @H~~?OP?OtYt_,?OOPI& g  Qs   F)zhf cache lszhf cache ls --revisionsz*hf cache ls --filter "size>1GB" --limit 20zhf cache ls --format json)examplesF	cache_dirz9Cache directory to scan (defaults to Hugging Face cache).r'   zCInclude revisions in the output instead of aggregated repositories.filterz-fz--filterzZFilter entries (e.g. 'size>1GB', 'type=model', 'accessed>7d'). Can be used multiple times.formatzOutput format.quietz-qz--quietz-Print only IDs (repo IDs or revision hashes).r   a  Sort entries by key. Supported keys: 'accessed', 'modified', 'name', 'size'. Append ':asc' or ':desc' to explicitly set the order (e.g., 'modified:asc'). Defaults: 'accessed', 'modified', 'size' default to 'desc' (newest/biggest first); 'name' defaults to 'asc' (alphabetical).limitzSLimit the number of results returned. Returns only the top N entries after sorting.c           	          [        U 5      nU=(       d    / n	[	        XqS9u  p U	 Vs/ s H  n[        X5      PM     nn[        R                  " 5       nU H,  nU
 Vs/ s H  nU" US   US   U5      (       d  M  UPM     n
nM.     U(       a)   [        UR                  5      u  nnU
R                  UUS9  Ub%  US:  a  [        R                  " SU S35      eU
SU n
U(       a1  U
 H*  u  nn[        Ub  UR                  OUR                   5        M,     g["        R$                  [&        ["        R(                  [*        0nUU   " XUS	9$ ! [         a  n[        SUR                   35      UeSnAff = fs  snf ! [         a%  n[        R                  " [        U5      5      UeSnAff = fs  snf ! [         a%  n[        R                  " [        U5      5      UeSnAff = f)
z&List cached repositories or revisions.Cache directory not found: N)r   r   r   )re   r   z&Limit must be a positive integer, got r   r   )r   r   r   r  r   r   r   typerBadParameterr0   timer   r   r   rr   ri   r{   r   tabler   r   r   )r  r'   r	  r
  r  r   r  rx   excfiltersr   r   r   
filter_fnsr   fnr   sort_key_fnr   rX   rv   
formatterss                         r6   lsr    s   xO&y1 lG2=^G4LSTGD*4?G
T ))+C&-MgUE!HeAh1L5gM  	8#5djj#A KLL['L:
 19$$'MeWTU%VWW&5/%ND((*>(&&DMMR & 	53J fgR_``M  O4S]]ODE3NO U 4  S*34
 N  	8$$SX.C7	8sb   E
 E: E5E: F,:F,(F1 

E2E--E25E: :
F) F$$F)1
G ; GG )zhf cache rm model/gpt2zhf cache rm <revision_hash>z hf cache rm model/gpt2 --dry-runzhf cache rm model/gpt2 --yeszQOne or more repo IDs (e.g. model/bert-base-uncased) or revision hashes to delete.yesz-yz--yeszSkip confirmation prompt.dry_runz,Preview deletions without removing anything.c           	          [        U5      n[	        X@5      nUR
                  (       a,  [        S5        UR
                   H  n[        SU 35        M     [        UR                  5      S:X  a  [        S5        [        R                  " SS9eUR                  " [        UR                  5      6 n[        UR                  5      n	/ n
U	R                  (       a  U
R!                  U	R                   S35        U	R"                  (       a  U
R!                  U	R"                   S	35        U
(       d  U
R!                  U	R$                   S	35        S
R'                  U
5      n[        SU SUR(                   S35        [+        UR                  5        U(       a  [        S5        gU(       d&  [        R,                  " SSS9(       d  [        S5        gUR/                  5         [        UR                  5      n	[        SU	R                   SU	R$                   SUR(                   S35        g! [         a  n[        SUR                   35      UeSnAff = f)z(Remove cached repositories or revisions.r  Nz2Could not find the following targets in the cache:rm   r   zNothing to delete.codez repo(s)z revision(s)z and About to delete z totalling r   Dry run: no files were deleted.zProceed with deletion?F)defaultzDeletion cancelled.Deleted z repo(s) and z revision(s); freed )r   r   r   r  r  r)   rr   rU   r'   r  Exitdelete_revisionsrp   rY   r(   rL   r   rM   rN   rs   expected_freed_size_strrw   confirmexecute)r   r  r  r  rx   r  
resolutionr   strategycountssummary_partssummary_texts               r6   rmr-  +  s   JO&y1 +=BJBC''ED.! ( : A%"#jja  --vj6J6J/KLH !4!45F!M 1 12(;<$$ = =>lKL ; ;<LIJ<<.L	\N+h6V6V5WWX
YZ":#6#67/0u}}%=uM#$ !4!45F	
6$$%]63N3N2OOcdl  eE  eE  dF  FG  	HO  O4S]]ODE3NOs   H$ $
I.IIzhf cache prunezhf cache prune --dry-runc                 :    [        U 5      n0 n[	        5       nUR
                   HD  n[        S UR                   5       5      nU(       d  M(  XU'   UR                  S U 5       5        MF     [        U5      S:X  a  [        S5        g[        [        U5      USS9n	UR                  " [        U	R                  5      6 n
[        U5      n[        S	UR                   S
U
R                    S35        [#        U5        U(       a  [        S5        gU(       d'  [$        R&                  " S5      (       d  [        S5        gU
R)                  5         [        SUR                   SU
R                    S35        g! [         a  n[        SUR                   35      UeSnAff = f)z)Remove detached revisions from the cache.r  Nc              3   \   #    U  H"  n[        UR                  5      S :X  d  M  Uv   M$     g7f)r   N)rU   r=   r   rv   s     r6   r   prune.<locals>.<genexpr>  s#     `n(HMMHZ^_H_XXns   ,	,c              3   8   #    U  H  oR                   v   M     g 7fr\   rh   r0  s     r6   r   r1    s     Gh(--hr   r   z2No unreferenced revisions found. Nothing to prune.r*   r   r  z unreferenced revision(s) (z total).r   zProceed?zPruning cancelled.r"  z! unreferenced revision(s); freed r   )r   r   r   r  r   rz   r/   r'   updaterU   rr   r%   r$  rp   rY   rN   r%  rw   r  r&  r'  )r  r  r  rx   r  r(   r'   rX   detachedr(  r)  r*  s               r6   pruner5  ~  s   0O&y1 EGH%I##`dnn``!GhGG $ 9~BC$I&J
 --vj6J6J/KLH *F	
66677RS[SsSsRtt|} #8,/0u}}Z00"#	HV0011RS[SsSsRttu
vwM  O4S]]ODE3NOs   E2 2
F<FF)zhf cache verify gpt2z)hf cache verify gpt2 --revision refs/pr/1z.hf cache verify my-dataset --repo-type datasetr_   r^   rv   zXCache directory to use when verifying files from cache (defaults to Hugging Face cache).	local_dirz?If set, verify files under this directory instead of the cache.fail_on_missing_filesz--fail-on-missing-filesz?Fail if some files exist on the remote but are missing locally.fail_on_extra_filesz--fail-on-extra-fileszLFail if some files exist locally but are not present on the remote revision.tokenc                 p   Ub"  Ub  [        S5        [        R                  " SS9e[        US9nUR	                  U [        US5      (       a  UR                  O
[        U5      UUUUS9n	Sn
[        U	R                  5      nU(       aC  [        S	5        U	R                   H&  n[        S
US    SUS    SUS    SUS    35        M(     Sn
U	R                  (       a\  U(       a/  [        S5        U	R                   H  n[        S
U 35        M     Sn
O&[        U	R                  5       S3n[        SU 35        U	R                  (       a\  U(       a/  [        S5        U	R                   H  n[        S
U 35        M     Sn
O&[        U	R                  5       S3n[        SU 35        U	R                  nU
S:w  aK  [        SU  SUR                   SU S35        [        SU	R                   35        [        R                  " U
S9e[        SU	R                   SU  SUR                   SU 35        [        S5        g) a  Verify checksums for a single repo revision from cache or a local directory.

Examples:
  - Verify main revision in cache: `hf cache verify gpt2`
  - Verify specific revision: `hf cache verify gpt2 --revision refs/pr/1`
  - Verify dataset: `hf cache verify karpathy/fineweb-edu-100b-shuffle --repo-type dataset`
  - Verify local dir: `hf cache verify deepseek-ai/DeepSeek-OCR --local-dir /path/to/repo`
NzCCannot pass both --local-dir and --cache-dir. Use one or the other.r   r  )r9  r   )r_   r^   rv   r6  r  r9  r   u;   ❌ Checksum verification failed for the following file(s):rm   pathz: expected r   z (	algorithmz), got actualr   z1Missing files (present remotely, absent locally):zM remote file(s) are missing locally. Use --fail-on-missing-files for details.u   ⚠️  z/Extra files (present locally, absent remotely):zV local file(s) do not exist on the remote repo. Use --fail-on-extra-files for details.u   ❌ Verification failed for 'z' (z) in r   z  Revision: u   ✅ Verified z file(s) for 'z  All checksums match.)rr   r  r#  r    verify_repo_checksumshasattrr   r0   r   
mismatchesmissing_pathsrU   extra_pathsverified_pathrv   checked_count)r_   r^   rv   r  r6  r7  r8  r9  apiresult	exit_codehas_mismatchesmpwarningverified_locations                   r6   verifyrM    sH   ` !6STjja  
5
!C&&%,Y%@%@)//c)n ' F I&++,NKL""AD6;q}oR+?OwWXYaWbVcde #	 EF))QCj! *I v++,- .; ;  HWI&'CD''QCj! (I v))*+ ,9 9  HWI&',,A~-gYc)//9J%PaObbcdeV__-./jji((	M&../~gYc)//IZZ_`q_r
st	
"#r5   )NFF)WrO   r   r   r   r  collectionsr   dataclassesr   enumr   typingr   r   r   r	   r
   r   r   r   r  huggingface_hub.errorsr   utilsr   r   r   r   r   r   r   r   utils._parsingr   r   
_cli_utilsr   r   r   r   r   r    r!   	cache_clir%   compiler   r   r   r   r   r   _sort_options_dictrp   re   r0   r+   rG   rJ   r   r/   RepoRefsMaprY   rw   r~   r   r   r   r   r   r   r   r   r3   r   r   r  commandr  OptionrP   r  Argumentr-  r5  modelrM  r*   r5   r6   <module>r^     s   O  	 
  # !  Q Q Q  +	 	 	 8   >?	 $   **ab6 ?5


LM    *C!s*-d|#d|$+.%u#e}% 
 ="43xP $   >8,>#??@
>9S>12Tni8J.KKLTT$XW^YWiMj=j5k Xpt X((
n	eN$667	78:("""6:"
4
[()"4>
>)>~x(:;UCTIJ>B*59JU	$sCx.@/*/59/JU/	/d*59JU	8E?  E d (3# 3%*uSRUX9V0WY]0]*^ 3l&[ &49 &Qd &X    	 	 	 	 	 	 	c\aL	
	\a V	
	\a cm	
	\a* !	
	+\a6 @	
	7\aF 7	
	G\aX f	
	Y\ad 
e\a\a~   ( 	 	 	5HS	d	
	H L	
	H 
,	
	
H* ?	
	+H6 
7HHV -/IJK 	 	 	)?xL	
	?x 
,	
	
?x ?	
	?x* 
+?x L?xD    )..  	 	 	 	=c$c$c$ c$ k	
		c$ R	
	c$  %%R	
	!c$. ##_	
	/c$< =c$> 
?c$c$r5   