
    5pjo                        S r SSKrSSKrSSKJr  SSKJrJr  SSKJ	r	  SSK
Jr  SSK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$  SSK%J&r&J'r'  SSK(J)r)  \$" SS9r*\	" SS9 " S S5      5       r+\RX                  " S5      r-1 Skr.1 Skr/1 Skr0\RX                  " S5      r1SSSSS.r20 r3\4" \05       H  r5\5\3\5'   \5 S3\3\5 S3'   \5 S 3\3\5 S!3'   M      \" S"\3\6\7S#9r8\	" SS9 " S$ S%5      5       r9\:\\S-  4   r;\<\\=\6   4   r>S&\\\=\   4   S'\94S( jr?S)\@S*\@S'\64S+ jrAS&\\\=\   4   S'S4S, jrBS-\S'\:\<\6\4   \<\6\:\\4   4   4   4S. jrCS/\6S'\64S0 jrDS-\S1\ES'\:\F\;   \>4   4S2 jrGS3\6S4\>S'\\\S-  \H/\E4   4S5 jrIS6\HS-  S7\6S8\HS'\E4S9 jrJS:\6S'\:\\;/\:\S;4   4   \E4   4S< jrKS-\S=\F\6   S'\+4S> jrL\*R                  S?/ S@QSA9      SmSC\\6S-  \'" SDS94   SE\\E\'" SFS94   SG\\F\6   S-  \'" SHSISJS94   SK\\8S-  \'" SLS94   SM\\@S-  \'" SNS94   SO\\E\'" SPS94   S'S4SQ jj5       rN\*R                  / SRQSA9   SnS=\\F\6   \&" SSS94   SC\\6S-  \'" SDS94   ST\\E\'" SUSVSWS94   SX\\E\'" SYS94   S'S4
SZ jj5       rO\*R                  S[S\/SA9   SnSC\\6S-  \'" SDS94   ST\\E\'" SUSVSWS94   SX\\E\'" SYS94   S'S4S] jj5       rP\*R                  / S^QSA9\ R                  SSSSBSBS4S_\S`\ Sa\!SC\\6S-  \'" SbS94   Sc\\6S-  \'" SdS94   Se\\E\'" SfSgS94   Sh\\E\'" SiSjS94   Sk\"S'S4Sl jj5       rRg)ozHContains the 'hf cache' command group with cache management subcommands.    N)defaultdict)CallableMapping)	dataclass)Enum)	AnnotatedAny)CLIError   )ANSICachedRepoInfoCachedRevisionInfoCacheNotFoundHFCacheInfo_format_sizeparse_hf_uriscan_cache_dir)parse_duration
parse_size   )	RepoIdArgRepoTypeOptRevisionOptTokenOpt
get_hf_apityper_factory)ArgumentOption)outzManage local cache directory.)helpT)frozenc                   T    \ rS rSr% \\   \S'   \\\\	   4   \S'   \
\S4   \S'   Srg)_DeletionResolution2   	revisionsselected.missing N)__name__
__module____qualname____firstlineno__	frozensetstr__annotations__dictr   r   tuple__static_attributes__r(       U/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/huggingface_hub/cli/cache.pyr#   r#   2   s0    ~>9-?#@@AA38_r3   r#   zA^(?P<key>[a-zA-Z_]+)\s*(?P<op>==|!=|>=|<=|>|<|=)\s*(?P<value>.+)$>   <=>!=<=>=>   refssizetypeaccessedmodified>   namer<   r>   r?   z.^(?P<key>[a-zA-Z_]+)(?::(?P<order>asc|desc))?$descasc)r>   r?   r<   r@   z:asc_ascz:desc_descSortOptions)r=   modulec                   8    \ rS rSr% Sr\\S'   \\S'   \\S'   Srg)CacheDeletionCountsQ   z>Simple counters summarizing cache deletions for CLI messaging.
repo_countpartial_revision_counttotal_revision_countr(   N)r)   r*   r+   r,   __doc__intr/   r2   r(   r3   r4   rH   rH   Q   s    HOr3   rH   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%   rH   )rO   rJ   total_revisionsrevisions_in_full_reposrepor%   rK   s          r4   summarize_deletionsrW   ^   s|     JO+1133y>)y>S00!OJ#s9~5#	 4 -Fz?SSr3   revision_countincomplete_countc                     / nU (       a  UR                  U  S35        U(       a  UR                  U S35        SR                  U5      $ )zMBuild the human-readable summary of what `hf cache prune` is about to delete.z unreferenced revision(s)z incomplete download(s) and )appendjoin)rX   rY   partss      r4   _prune_summaryr_   p   sG    E''@AB())@AB<<r3   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  [        R                  " SU S35        Mi  [        R                  " SU S35        U Hc  nSR                  [        UR                  5      5      =(       d    S	n[        R                  " S
UR                   SU SUR                   35        Me     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rV   s    r4   <lambda>0print_cache_selected_revisions.<locals>.<lambda>|   s    $..RVR^R^RdRdRfAgr3   key/c                     U R                   $ rb   commit_hashrevs    r4   rh   ri   ~       3??r3     - z (entire repo): z
(detached)z      z [z] N)sortedkeysrd   re   rS   r%   r   textr]   r;   ro   size_on_disk_str)rO   rV   repo_keyr%   revisionr;   s         r4   print_cache_selected_revisionsr|   z   s    ',,.4ghnn%Qt||n5+17RS	y>S00HHtH:^454z#$!H88F8==12BlDHHvh2232dV2h>W>W=XYZ " ir3   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_idrf   r%   ro   )r}   repo_lookuprevision_lookuprV   rz   r{   s         r4   build_cache_indexr      sk     .0KLNO##==&&( $HH=A<LO006689 ' $
 ''r3   targetc                    U R                  S5      (       d  U $ [        U 5      nUR                  (       d  [        S5      eUR                  c  UR
                  (       a  [        S5      eUR                   SUR                   3$ )zCReturn the cache id matching a repo target passed to `hf cache rm`.zhf://z:Only repository hf:// URIs are supported by `hf cache rm`.zBOnly repo-level hf:// URIs are supported by `hf cache rm` for now.rl   )
startswithr   is_repor
   r{   path_in_repor=   id)r   uris     r4   _repo_cache_id_from_targetr      sl    W%%
v
C;;STT
||3#3#3[\\hhZq!!r3   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$ rb   rc   rg   s    r4   rh   'collect_cache_entries.<locals>.<lambda>   s    QUQ]Q]QcQcQe@fr3   rj   c                     U R                   $ rb   rn   rp   s    r4   rh   r      rr   r3   Nc                 P    U S   R                   U S   b  U S   R                  4$ S4$ )Nr   r    )r   ro   entrys    r4   rh   r      s2    a!!(-a(<a$$BDr3   c                      U S   R                   $ )Nr   )r   r   s    r4   rh   r      s    uQx'8'8r3   )rv   r   r-   r%   r;   r\   sort)r}   r   entriesrepo_refs_mapsorted_reposrV   r{   refs           r4   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;   a@  [        TR                  5       5      m	S[        S[        S-  S[        S[        4UUU	4S jjnU$ TS:X  aJ  TR                  5       mTS:w  a  [        ST S35      eS[        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[        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'.rk   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      $ rb   )_compare_numericsize_on_disk)rV   r{   _r   size_thresholds      r4   rh   &compile_cache_filter.<locals>.<lambda>   s3    )9%-%9H!!*
?C?P?P*
r3   >   r>   r?   rV   r{   NnowrP   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   )rV   r{   r   	timestamprk   r   secondss       r4   _time_filter*compile_cache_filter.<locals>._time_filter   sU     *$ "" ' ++''   #CORAAr3   r=   r6   z/Only '=' is supported for 'type' filters. Got 'r   c                 >   > U R                   R                  5       T:H  $ rb   )rd   rf   )rV   r{   r   expecteds      r4   _type_filter*compile_cache_filter.<locals>._type_filter   s    >>'')X55r3   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 rb   )r;   getr-   rf   )rV   r{   r   r;   r   r   	value_raws        r4   _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grouprf   _ALLOWED_OPERATORSlist_FILTER_KEYSr   r   r   r   floatbool)r   r   r   r   r   r   r   rk   r   r   r   r   s    `    @@@@@@r4   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9Kd9R 
	BY^ 
	Bcg 
	B 
	B 
f}??$9NrdRTUVV	6~ 	69Kd9R 	6W\ 	6ae 	6  9MbTQRSTT	F~ 	F9Kd9R 	FW\ 	Fae 	F 	F r3   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)r6   r8   r7   r5   r:   r9   z)Unsupported numeric comparison operator: )r   )r   r   r   comparisonss       r4   r   r     sT    | ]m\\mmK 
DRDIJJ?r3   	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'.rk   orderzUnsupported sort key 'r   r   r   rA   r   rP   .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)Nr@   r<   r>   g        r?   zUnsupported sort key: )r   rf   r   r   r   r   )r   rV   r{   r   rk   s       r4   	_sort_key%compile_cache_sort.<locals>._sort_key+  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8r3   )_SORT_PATTERNr   r   rf   r   r   
_SORT_KEYSr   _SORT_DEFAULT_ORDER
CacheEntryr1   r	   )r   r   explicit_orderr   reverser   rk   s         @r4   compile_cache_sortr     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< r3   targetsc                 H   [        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      R	                  5       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   rf   re	fullmatchr   r\   addro   r   r%   rR   r-   r#   r1   )r}   r   r   r   r&   r%   r'   
raw_targetr   loweredr   rV   r{   matched_reporevsfrozen_selecteds                   r4   _resolve_deletion_targetsr   L  sf   #4]#C K>I#>NH%IG
!!#,,.<<*G44#''0E}z*"NDNx(MM(../"'A&'I'O'O'QRNN:&$..H"&&x0MM(../ /+ 2 @H~~?OP?OtYt_,?OOPI& g  Qs   &Fz	list | ls)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.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.show_warningsz*Show warnings about cache inconsistencies.c                     [        U 5      nU=(       d    / n[	        XaS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  o" 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(       a  U	 VVs/ s Hx  u  nnUc  M  UR                  UR                  UR                   UR"                  [        UR$                  5      UR&                  UR(                  [+        UR,                  5      S	.PMz     nnn[.        R0                  " U/ S
QSSS0S9  OU	 VVs/ s Hv  u  nnUR                  UR                  UR                   UR&                  UR2                  =(       d    SUR(                  [+        U
R5                  U[7        5       5      5      S.PMx     nnn[.        R0                  " U/ SQSSS0S9  U	(       a  U	 VVs1 s H  u  nnUiM
     nnn[9        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[.        R<                  " [>        R@                  " SU SU S[C        U5       S35      5        [9        URD                  5      (       ay  U(       aE  URD                   H4  n[.        RF                  " [        U5      RI                  S5      S-   5        M6     O-[.        RF                  " S[9        URD                  5       S35        URJ                  nU(       a:  [.        RL                  " S[9        U5       S[C        URN                  5       S35        gg! [         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s  snnf s  snnf s  snnf ) z&List cached repositories or revisions.Cache directory not found: N)r   r   r   )rk   r   z&Limit must be a positive integer, got r   )r   re   rd   r{   snapshot_pathr<   r   r;   )r   r{   r<   r   r;   r{   r<   r   )headersid_key
alignmentsr   )r   re   rd   r<   r   r   r;   )r   r<   r   r   r;   r   c              3   4   #    U  H  u  pUc  M
  Sv   M     g 7f)Nr   r(   .0r   rq   s      r4   	<genexpr>ls.<locals>.<genexpr>  s      LvqCs   		c              3   H   #    U  H  u  pUc  M
  UR                   v   M     g 7frb   r   r   s      r4   r   r     s     WG&!s-S--Gs   	""c              3   L   #    U  H  n[        UR                  5      v   M     g 7frb   )rS   r%   r   rV   s     r4   r   r     s      NT^^!4!4s   "$c              3   8   #    U  H  oR                   v   M     g 7frb   r   r   s     r4   r   r     s     H<4..<   z
Found z repo(s) for a total of z revision(s) and z	 on disk.z. Repo ignored.zFound zF cache inconsistencies. Re-run with `--show-warnings` to display them.z" incomplete download(s) totalling z$. Remove them with 'hf cache prune'.)(r   r   r
   r   r   r   r   clickBadParameterr.   timer   r   r   r   re   rd   ro   r   ry   last_modified_strrv   r;   r   tablelast_accessed_strr   r-   rS   sumrx   r   boldr   warningswarningrstripincomplete_fileshintincomplete_size_on_disk)r   r%   r   r   r   r   r}   excfiltersr   r   r   
filter_fnsr   fnr   sort_key_fnr   rV   r{   rR   r   unique_reposrJ   rX   
total_sizer  r  s                               r4   lsr  x  s   j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/ #*
 #*h	mm<<!^^$00!$X%;%;!< 11!)!;!;x}}-	 #* 	 
 			G(		
" #
 #a mm<<!^^--!%!7!7!=2!%!7!7}00y{CD # 	 
 			L(		
 ,34GqG4&
  L LLNWGWWJ  N NNNH<HHJII:,&>~>N O$Z01<	
 =!!""(11CL//47HHI 2 KK]33455{| %55S)*++MMAABC D11	
 A  O4S]]ODE3NO U 4  S*34
 N  	8$$SX.C7	8
*
( 5s|   N> O. O)O. P 9P (P% )
Q7A1QA=Q3Q#>
O&O!!O&)O. .
P8 PP%
Q/ QQ)zhf cache rm model/gpt2z-hf cache rm hf://models/openai-community/gpt2zhf cache rm <revision_hash>z hf cache rm model/gpt2 --dry-runzhf cache rm model/gpt2 --yesziOne or more repo IDs (e.g. model/bert-base-uncased), repo-level hf:// URIs, or revision hashes to delete.yesz-yz--yeszSkip confirmation prompt.dry_runz,Preview deletions without removing anything.c           	      t    [        U5      n[	        X@5      nUR
                  (       a;  SR                  S UR
                   5       5      n[        R                  " SU 35        [        UR                  5      S:X  a3  [        R                  " S5        [        R                  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[        R                  " SU SUR.                   S35        [1        UR$                  5        U(       a7  [        R2                  " SSU	R&                  U	R,                  UR.                  S9  g[        R4                  " SUS9  UR7                  5         [#        UR$                  5      n	[        R2                  " SU	R&                   SU	R,                   SUR.                   S3U	R&                  U	R,                  UR.                  S9  g! [         a  n[        SUR                   35      UeSnAff = f)z(Remove cached repositories or revisions.r   N
c              3   ,   #    U  H
  nS U 3v   M     g7frs   Nr(   )r   r   s     r4   r   rm.<locals>.<genexpr>E  s     K8Jud5'N8J   zCould not find in cache:
r   zNothing to delete.codez repo(s)z revision(s)r[   About to delete z totalling r   Dry run: no files were deleted.T)r  r   r%   r<   zProceed with deletion?r  Deleted z repo(s) and z revision(s); freed )repos_deletedrevisions_deletedfreed)r   r   r
   r   r   r'   r]   r   r  rS   r%   rx   r   
exceptionsExitdelete_revisionsrv   rW   r&   rJ   r\   rK   rL   expected_freed_size_strr|   resultconfirmexecute)r   r   r  r  r}   r  
resolutiondetailsstrategycountssummary_partssummary_texts               r4   rmr,    sR   LO&y1 +=BJ))K
8J8JKK0	:;
: A%%&###++--vj6J6J/KLH !4!45F!M 1 12(;<$$ = =>lKL ; ;<LIJ<<.LHH~[9Y9Y8ZZ[\]":#6#67

-##1111	
 	KK(c2 !4!45FJJ
6$$%]63N3N2O P2231	6'' 55..U  O4S]]ODE3NOs   J 
J7J22J7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R                  n	[        U5      S:X  a  U	(       d  [        R                  " S5        gUR                  " [        U5      6 n
[        U5      nU
R                   UR"                  -   n[%        UR&                  [        U	5      5      n[        R                  " SU S[)        U5       S	35        [+        U5        U(       a5  [        R,                  " S
SUR&                  [        U	5      [)        U5      S9  g[        R.                  " SUS9  U
R1                  5         U	 H  n UR2                  R5                  5         M      [        R,                  " SU S[)        U5       S3UR&                  [        U	5      [)        U5      S9  g! [         a  n[        SUR                   35      UeSnAff = f! [6         a     M  [8         a1  n[        R:                  " SUR2                   SU 35         SnAM  SnAff = f)zBRemove detached revisions and incomplete downloads from the cache.r   Nc              3   \   #    U  H"  n[        UR                  5      S :X  d  M  Uv   M$     g7f)r   N)rS   r;   r   r{   s     r4   r   prune.<locals>.<genexpr>  s#     `n(HMMHZ^_H_XXns   ,	,c              3   8   #    U  H  oR                   v   M     g 7frb   rn   r/  s     r4   r   r0    s     Gh(--hr   r   zJNo unreferenced revisions or incomplete downloads found. Nothing to prune.r   (z total).r  T)r  r%   
incompleter<   zProceed?r  z!Could not delete incomplete file z: r  z; freed r   )r  incomplete_deletedr  )r   r   r
   r   r   r   r-   r%   updater  rS   r   rx   r!  rv   rW   expected_freed_sizer  r_   rL   r   r|   r#  r$  r%  	file_pathunlinkFileNotFoundErrorOSErrorr  )r   r  r  r}   r  r&   r%   rV   detachedr  r(  r)  total_freedsummaryincomplete_files                  r4   pruner?  r  s/   0O&y1 EGH%I##`dnn``!GhGG $ %55
9~#3]^--vi/@AH *F..1V1VVKV88#>N:OPGHHy<+D*EXNO"8,

-11+,k*	
 	KK
$+	`%%,,. , JJ
7)8L$=#>a@ 55/0;'	]  O4S]]ODE3NOT ! 	 	`KK;O<U<U;VVXY\X]^__	`s5   G; H&;
H#HH#&
I-3	I-<&I((I-)zhf cache verify gpt2z)hf cache verify gpt2 --revision refs/pr/1z.hf cache verify my-dataset --repo-type datasetre   rd   r{   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           
         Ub6  Ub3  [         R                  " S5        [        R                  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                  (       a=  S	R                  S
 U	R                   5       5      n[         R                  " SU 35        Sn
U	R                  (       aq  U(       a>  S	R                  S U	R                   5       5      n[         R                  " SU 35        Sn
O,[         R                  " [        U	R                  5       S35        U	R                   (       aq  U(       a>  S	R                  S U	R                    5       5      n[         R                  " SU 35        Sn
O,[         R                  " [        U	R                   5       S35        U	R"                  nU
S:w  aS  [         R                  " SU  SUR                   SU SU	R$                   35        [        R                  R	                  U
S9e[         R&                  " SU	R(                   SUR                   SU  S3U UR                  U	R(                  [        U5      S9  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  )rC  r   )re   rd   r{   r@  r   rC  r   r  c           
   3   V   #    U  H  nS US    SUS    SUS    SUS    3v   M!     g7f)	rs   pathz: expected r   r2  	algorithmz), got actualNr(   )r   ms     r4   r   verify.<locals>.<genexpr>  sE      
& 1V9+[:r!K.9IQRS[Q\P]^&s   ')u<   ❌ Checksum verification failed for the following file(s):
r   c              3   ,   #    U  H
  nS U 3v   M     g7fr  r(   r   ps     r4   r   rJ    s     I4Hq$qc
4Hr  u6   ❌ Missing files (present remotely, absent locally):
zM remote file(s) are missing locally. Use --fail-on-missing-files for details.c              3   ,   #    U  H
  nS U 3v   M     g7fr  r(   rL  s     r4   r   rJ    s     G4Fq$qc
4Fr  u4   ❌ Extra files (present locally, absent remotely):
zV local file(s) do not exist on the remote repo. Use --fail-on-extra-files for details.zVerification failed for 'z' (z) in z.
  Revision: z	Verified z file(s) for z 'z'. All checksums match.)re   rd   checkedrF  )r   errorr   r  r   r   verify_repo_checksumshasattrr   r.   
mismatchesr]   rx   missing_pathsr  rS   extra_pathsverified_pathr{   r#  checked_count)re   rd   r{   r   r@  rA  rB  rC  apir#  	exit_coder'  verified_locations                r4   verifyr[    sP   ` !6		WX###++
5
!C&&%,Y%@%@)//c)n ' F I)) 
&&
 
 	PQXPYZ[	 iiIF4H4HIIGHHNwiXYIKKv++,- .; ;
 iiGF4F4FGGGHHLWIVWIKKv))*+ ,9 9
 ,,A~		'yIOO3DEJ[I\\klrl{l{k|}	
 ###33JJ
F(()y6Gr'Rij//$$"#r3   )NFNNNF)NFF)SrM   r   r   collectionsr   collections.abcr   r   dataclassesr   enumr   typingr   r	   r   huggingface_hub.errorsr
   utilsr   r   r   r   r   r   r   r   utils._parsingr   r   
_cli_utilsr   r   r   r   r   r   
_frameworkr   r   _outputr   	cache_clir#   compiler   r   r   r   r   r   _sort_options_dictrv   rk   r.   r)   rE   rH   r1   r   r0   r-   RepoRefsMaprW   rN   r_   r|   r   r   r   r   r   r   r   r   r   r   commandr  r,  r?  modelr[  r(   r3   r4   <module>rm     s   O 	  # - !  !  +	 	 	 8 ` ` (  >?	 $   **ab6 ?5


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