
    o iq                     N
   d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZmZmZmZmZmZ ddlZddlmZmZmZmZmZmZmZmZ dd	lm Z m!Z! d
dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(  e(d          Z) G d de*e          Z+ e	d           G d d                      Z, ej-        d          Z.h dZ/h dZ0h dZ1 ej-        d          Z2dddddZ3i Z4 e5e1          D ]Z6e6e4e6<   e6 de4e6 d<   e6 de4e6 d<    ed e4e*e7!          Z8 e	d           G d" d#                      Z9eeee         f         Z:eee;e*         f         Z<d$eee;e         f         d%e9fd&Z=d$eee;e         f         d%dfd'Z>d(ed%eee*ef         ee*eeef         f         f         fd)Z?d(ed*e@d%eee:         e<f         fd+ZAd,e*d-e<d%eeee         eBge@f         fd.ZCd/ee:         d*e@d-e<d%eee*ef                  fd0ZDd/ee:         d*e@d-e<d%dfd1ZEd/ee:         d*e@d-e<d%dfd2ZFd/ee:         d*e@d-e<d%dfd3ZGd4eeB         d5e*d6eBd%e@fd7ZHd8e*d%eIee:geIed9f         f         e@f         fd:ZJd(ed;eKe*         d%e,fd<ZLe)M                                dd=de+jN        d=ddfd>eee*          ejO        d?          f         d@ee@ ejO        dA          f         dBeeeKe*                   ejO        dCdDdE          f         dFee+ ejO        dG          f         dHee@ ejO        dIdJdK          f         dLeee8          ejO        dM          f         dNeeeP          ejO        dO          f         d%dfdP            ZQe)M                                	 	 	 dhd;eeKe*          ejR        dQ          f         d>eee*          ejO        d?          f         dRee@ ejO        dSdTdU          f         dVee@ ejO        dW          f         d%df
dX            ZSe)M                                	 	 	 dhd>eee*          ejO        d?          f         dRee@ ejO        dSdTdU          f         dVee@ ejO        dW          f         d%dfdY            ZTe)M                                e$jU        dddd=d=dfdZe#d[e$d\e%d>eee*          ejO        d]          f         d^eee*          ejO        d_          f         d`ee@ ejO        dadb          f         dcee@ ejO        ddde          f         dfe&d%dfdg            ZVdS )izHContains the 'hf cache' command group with cache management subcommands.    N)defaultdict)	dataclass)Enum)	AnnotatedAnyCallableDictListMappingOptionalTuple   )ANSICachedRepoInfoCachedRevisionInfoCacheNotFoundHFCacheInfo_format_sizescan_cache_dirtabulate)parse_duration
parse_size   )	RepoIdArgRepoTypeOptRevisionOptTokenOpt
get_hf_apityper_factoryzManage local cache directory.)helpc                       e Zd ZdZdZdZdS )OutputFormattablejsoncsvN)__name__
__module____qualname__r#   r$   r%        Y/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/huggingface_hub/cli/cache.pyr"   r"   1   s        ED
CCCr*   r"   T)frozenc                   f    e Zd ZU ee         ed<   eeee         f         ed<   e	edf         ed<   dS )_DeletionResolution	revisionsselected.missingN)
r&   r'   r(   	frozensetstr__annotations__dictr   r   tupler)   r*   r+   r.   r.   7   sR         ~>9-?#@@AAAA38_r*   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                   2    e Zd ZU dZeed<   eed<   eed<   dS )CacheDeletionCountsz>Simple counters summarizing cache deletions for CLI messaging.
repo_countpartial_revision_counttotal_revision_countN)r&   r'   r(   __doc__intr4   r)   r*   r+   rJ   rJ   V   s9         HHOOOr*   rJ   selected_by_reporeturnc                 
   d}d}d}|                                  D ]S\  }}|t          |          z  }t          |          t          |j                  k    r|dz  }|t          |          z  }T||z
  }t          |||          S )z(Summarize deletions across repositories.r   r   )itemslenr/   rJ   )rP   rK   total_revisionsrevisions_in_full_reposrepor/   rL   s          r+   summarize_deletionsrX   c   s     JO+1133 6 6i3y>>)y>>S0000!OJ#s9~~5#,/FFz+A?SSSr*   c           
         t          |                                 d           D ]}|j         d|j         }t          | |         d           }t	          |          t	          |j                  k    rt          d| d           dt          d| d           |D ]M}d                    t          |j                            pd	}t          d
|j	         d| d|j
                    NdS )zBPretty-print selected cache revisions during confirmation prompts.c                 B    | j         | j                                        fS N	repo_typerepo_idlowerrW   s    r+   <lambda>z0print_cache_selected_revisions.<locals>.<lambda>w   s    $.RVR^RdRdRfRfAg r*   key/c                     | j         S r[   commit_hashrevs    r+   ra   z0print_cache_selected_revisions.<locals>.<lambda>y       3? r*     - z (entire repo): z
(detached)z      z [z] N)sortedkeysr]   r^   rT   r/   printjoinr=   rg   size_on_disk_str)rP   rW   repo_keyr/   revisionr=   s         r+   print_cache_selected_revisionsru   u   s)   ',,..4g4ghhh 
X 
Xn55t|55+D17R7RSSS	y>>S00001111222 X   !!!! 	X 	XH88F8=1122BlDV8/VV4VV8;TVVWWWW	X
X 
Xr*   hf_cache_infoc                     i }i }| j         D ]H}|j                                        }|||<   |j        D ] }||f||j                                        <   !I||fS )zPCreate lookup tables so CLI commands can resolve repo ids and revisions quickly.)reposcache_idr_   r/   rg   )rv   repo_lookuprevision_lookuprW   rs   rt   s         r+   build_cache_indexr|      s     .0KLNO# M M=&&(( $H 	M 	MH=A8<LOH0668899	M''r*   include_revisionsc                   g }i }t          | j        d           }|D ]n}t          d |j        D                       ||<   |r2t          |j        d           D ]}|                    ||f           W|                    |df           o|r|                    d            n|                    d            ||fS )z;Flatten cache metadata into rows consumed by `hf cache ls`.c                 B    | j         | j                                        fS r[   r\   r`   s    r+   ra   z'collect_cache_entries.<locals>.<lambda>   s    QUQ]QcQcQeQe@f r*   rb   c                 &    h | ]}|j         D ]}|S r)   )r=   ).0rt   refs      r+   	<setcomp>z(collect_cache_entries.<locals>.<setcomp>   s*    (e(e(eW_Wd(e(ePS(e(e(e(er*   c                     | j         S r[   rf   rh   s    r+   ra   z'collect_cache_entries.<locals>.<lambda>   rj   r*   Nc                 J    | d         j         | d         | d         j        ndfS )Nr   r    )ry   rg   entrys    r+   ra   z'collect_cache_entries.<locals>.<lambda>   s+    a!(-a(<a$$" r*   c                     | d         j         S )Nr   )ry   r   s    r+   ra   z'collect_cache_entries.<locals>.<lambda>   s    uQx'8 r*   )rn   rx   r2   r/   appendsort)rv   r}   entriesrepo_refs_mapsorted_reposrW   rt   s          r+   collect_cache_entriesr      s    !#G!#M--3f3fgggL ) )'(e(eT^(e(e(effd 	)"4>7R7RSSS 1 1h/00001 NND$<(((( :  	 	
 	
 	
 	
 	88999M!!r*   exprr   c           
      `  	
 t                               |                                           }|st          d|  d          |                    d                                          |                    d          |                    d                                          t          vr+t          d d|  dt          t                     d	          t          vr+t          d
 d|  dt          t                     d	          dk    rt                    

fdS dv rRt                                                    	dt          dt          t                   dt          dt          f	fd}|S dk    r\                                dk    rt          d d          dt          dt          t                   dt          dt          ffd}|S dk    rt          d d	          dt          dt          t                   dt          dt          ffd}|S )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'.rc   opvaluezUnsupported operator 'z' in filter ''. Must be one of .zUnsupported filter key '' in 'r>   c                 B    t          ||j        n| j                  S r[   )_compare_numericsize_on_disk)rW   rt   _r   size_thresholds      r+   ra   z&compile_cache_filter.<locals>.<lambda>   s+    )9%-%9H!!t?P*
 *
 r*   >   r@   rA   rW   rt   nowrQ   c                 n    dk    r| j         n||j        n| j        }|dS t          ||z
            S )Nr@   F)last_accessedlast_modifiedr   )rW   rt   r   	timestamprc   r   secondss       r+   _time_filterz*compile_cache_filter.<locals>._time_filter   s\     *$$ "" ' ++'   u#C)ORAAAr*   r?   r8   z/Only '=' is supported for 'type' filters. Got 'r   c                 >    | j                                         k    S r[   )r]   r_   )rW   rt   r   expecteds      r+   _type_filterz*compile_cache_filter.<locals>._type_filter   s    >''))X55r*   z.Only '=' is supported for 'refs' filters. Got c                     ||j         n!                    | t                                }                                d |D             v S )Nc                 6    g | ]}|                                 S r)   )r_   )r   r   s     r+   
<listcomp>z>compile_cache_filter.<locals>._refs_filter.<locals>.<listcomp>   s     (E(E(E(E(E(Er*   )r=   getr2   r_   )rW   rt   r   r=   r   	value_raws       r+   _refs_filterz*compile_cache_filter.<locals>._refs_filter   sO    $,$88==m>O>OPTV_VaVa>b>bD??$$(E(E(E(E(EEEr*   )_FILTER_PATTERNmatchstrip
ValueErrorgroupr_   _ALLOWED_OPERATORSlist_FILTER_KEYSr   r   r   r   r   floatbool)r   r   r   r   r   r   r   rc   r   r   r   r   s    `    @@@@@@r+   compile_cache_filterr      s    !!$**,,//E B@@@@AAA
++e


"
"
$
$C	T		BG$$**,,I	###v"vv4vv[_`r[s[svvvwww
,lClltllW[\hWiWilllmmm
f}}#I..
 
 
 
 
 	
 &&& !2!233
	B~ 
	BBT9U 
	B\a 
	Bfj 
	B 
	B 
	B 
	B 
	B 
	B 
	B 
	B 
f}}??$$99UrUUUVVV	6~ 	6BT9U 	6Z_ 	6dh 	6 	6 	6 	6 	6 	6  99SbSSSTTT	F~ 	FBT9U 	FZ_ 	Fdh 	F 	F 	F 	F 	F 	F 	F r*   r   c                   g }| D ]\  }}|rQ|
|j         |j        |j        t          |j                  |j        |j        |j        t          |j	                  d}nO|j         |j        |j        |j        |j        t          |
                    |t                                          d}|                    |           |S )zGNormalize cache entries into serializable records for JSON/CSV exports.Nr^   r]   rt   snapshot_pathr   r   r   r=   r^   r]   r   r   r   r=   )r^   r]   rg   r3   r   r   r   r   rn   r=   r   r2   r   )r   r}   r   payloadrW   rt   records          r+   _build_cache_export_payloadr      s     %'G!  h 	<!^$0!$X%;!<!< ( 5!%!3!)!7x}--	& 	&FF  <!^ $ 1!%!3!%!3}00y{{CCDD F 	vNr*   c                8   | s|rdnd}t          |           dS |rg d}d | D             }ng d}fd| D             }t          t          ||                     d	 | D             }t          |          }|r3t          d
 | D                       }t          d | D                       }	n2t          d |D                       }t          d |D                       }	d| d| dt	          |	           d}
t          t          j        |
                     dS )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REFSc                     g | ]Z\  }}||j         |j        |j                            d          |j        d                    t          |j                            g[S )N   rm   )ry   rg   rr   rjustlast_modified_strrq   rn   r=   )r   rW   rt   s      r+   r   z-print_cache_entries_table.<locals>.<listcomp>  sp     

 

 

 h# $)//22*..// $##r*   )r   r   LAST_ACCESSEDr   r   c                     g | ]u\  }}|j         |j                            d           |j        pd|j        d                    t                              |t                                                    gvS )r   r   rm   )	ry   rr   r   last_accessed_strr   rq   rn   r   r2   )r   rW   r   r   s      r+   r   z-print_cache_entries_table.<locals>.<listcomp>(  s     	
 	
 	
 a %++A..&,"& 1 1$	 D DEEFF	
 	
 	
r*   )headersc                     h | ]\  }}|S r)   r)   )r   rW   r   s      r+   r   z,print_cache_entries_table.<locals>.<setcomp>5  s    000WT1D000r*   c              3   $   K   | ]\  }}|dV  d S )Nr   r)   r   r   rt   s      r+   	<genexpr>z,print_cache_entries_table.<locals>.<genexpr>8  s+      RR;1hX=QQ=Q=Q=Q=QRRr*   c              3   .   K   | ]\  }}||j         V  d S r[   r   r   s      r+   r   z,print_cache_entries_table.<locals>.<genexpr>9  s.      bb;1hXMa.MaMaMaMabbr*   c              3   >   K   | ]}t          |j                  V  d S r[   )rT   r/   r   rW   s     r+   r   z,print_cache_entries_table.<locals>.<genexpr>;  s,      JJTS00JJJJJJr*   c              3   $   K   | ]}|j         V  d S r[   r   r   s     r+   r   z,print_cache_entries_table.<locals>.<genexpr><  s%      DDt*DDDDDDr*   z
Found z repo(s) for a total of z revision(s) and z	 on disk.)rp   r   rT   sumr   r   bold)r   r}   r   messager   
table_rowsunique_reposrK   revision_count
total_sizesummarys     `        r+   print_cache_entries_tabler     s     2Ch..Ihg 
EEE

 

 #*

 

 



 KJJ	
 	
 	
 	
 #	
 	
 	

 
(:w
/
/
/00000000L\""J ERR'RRRRRbb'bbbbb

JJ\JJJJJDD|DDDDD
 B  B  B^  B  B^jku^v^v  B  B  BG	$)G

r*   c                    t          | ||          }t          j        |t          j        d           t          j                            d           dS )z7Dump cache entries as JSON for scripting or automation.r}   r   r   )indent
N)r   r$   dumpsysstdoutwrite)r   r}   r   r   s       r+   print_cache_entries_jsonr   B  sO     *'EVfstttGIgsz!,,,,JTr*   c                P   t          | ||          }t          j        t          j                  }|rg d}ng d}|                    |           |sdS |D ]M}|d         }|r|                    dd          |                    dd          |                    d	d          |                    d
d          |                    d          |                    d          |                    d          |rd                    |          ndg}n|                    dd          |                    dd          |                    d          |                    d          |                    d          |rd                    |          ndg}|                    |           OdS )z@Export cache entries as CSV rows with the shared payload format.r   r   r   Nr=   r^   r   r]   rt   r   r   r   r   rm   )r   r%   writerr   r   writerowr   rq   )	r   r}   r   recordsr   r   r   r=   rows	            r+   print_cache_entries_csvr   K  s   )'EVfstttGZ
##F e	
 	
 	
 edd
OOG   f~ 	

9b))

;++

:r**

?B//

>**

?++

?++"&.B	CC 

9b))

;++

>**

?++

?++"&.BC 	- r*   leftr   rightc                     | dS | |k    | |k    | |k    | |k     | |k    | |k    d}||vrt          d|           ||         S )z)Evaluate numeric comparisons for filters.NF)r8   r:   r9   r7   r<   r;   z)Unsupported numeric comparison operator: )r   )r   r   r   comparisonss       r+   r   r   |  sr    |u U]emE\E\emem K 
IRIIJJJr?r*   	sort_expr.c           
         t                               |                                                                           }|st	          d|  d          |                    d                                          |                    d          }t          vr+t	          d d|  dt          t                     d          |r|nt                   }|d	k    }d
t          dt          t          df         ffd}||fS )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'.rc   orderzUnsupported sort key 'r   r   r   rC   r   rQ   .c                 2   | \  }}dk    r|j                                         }|fS dk    r||j        n|j        }|fS dk    r|j        |j        nd}|fS dk    r&||j        |j        nd}n|j        |j        nd}|fS t          d           )NrB   r>   r@   g        rA   zUnsupported sort key: )ry   r_   r   r   r   r   )r   rW   rt   r   rc   s       r+   	_sort_keyz%compile_cache_sort.<locals>._sort_key  s    h&==,,..E8O&==-5-AH))tGXE8O* +/*<*HD&&cE8O*#2:2H2T..Z].2.@.L**RU8O 7#77888r*   )_SORT_PATTERNr   r   r_   r   r   
_SORT_KEYSr   _SORT_DEFAULT_ORDER
CacheEntryr6   r   )r   r   explicit_orderr   reverser   rc   s         @r+   compile_cache_sortr     s    	 1 1 7 7 9 9::E xvivvvwww
++e


"
"
$
$C[[))N
*m#mmYmmZ^_iZjZjmmmnnn -JNN2Ec2JEvoG9 9c3h 9 9 9 9 9 9< gr*   targetsc                 8   t          |           \  }}t          t                    }t                      }g }|D ]}|                                }|s|                                }	t          j        d|	          rh|                    |	          }
|
|                    |           p|
\  }}||         	                    |           |	                    |j
                   |                    |	          }||                    |           |j        D ]7}||         	                    |           |	                    |j
                   8d |                                D             }t          t          |          |t          |                    S )z8Resolve the deletion targets into a deletion resolution.z[0-9a-fA-F]{40}Nc                 4    i | ]\  }}|t          |          S r)   )r2   )r   rW   revss      r+   
<dictcomp>z-_resolve_deletion_targets.<locals>.<dictcomp>  s$    PPPttYt__PPPr*   r/   r0   r1   )r|   r   setr   r_   re	fullmatchr   r   addrg   r/   rS   r.   r2   r6   )rv   r   rz   r{   r0   r/   r1   
raw_targettargetloweredr   rW   rt   matched_repofrozen_selecteds                  r+   _resolve_deletion_targetsr    s   #4]#C#C K>I#>N>NH%%IG 0 0
!!## 	,,..<*G44 	#''00E}z***"ND(TNx(((MM(.///"w//NN:&&&$. 	0 	0H\"&&x000MM(.////	0 QPx~~?O?OPPPOI&& g   r*   F	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                    	 t          |           }nL# t          $ r?}t          dt          |j                              t          j        d          |d}~ww xY w|pg }	t          ||          \  }
	 fd|	D             }n4# t          $ r'}t          j	        t          |                    |d}~ww xY wt          j
                    |D ]fd|
D             }
|rd	 t          |j                  \  }}|
                    ||           n4# t          $ r'}t          j	        t          |                    |d}~ww xY w|(|d	k     rt          j	        d
| d          |
d|         }
|r'|
D ]"\  }}t          ||j        n|j                   #dS t           j        t$          t           j        t(          t           j        t,          i} ||         |
|          S )z&List cached repositories or revisions.Cache directory not found: r   codeN)r}   c                 0    g | ]}t          |          S r)   )r   )r   r   r   s     r+   r   zls.<locals>.<listcomp>1  s$    TTTD*4??TTTr*   c                 F    g | ]} |d          |d                   |S )r   r   r)   )r   r   fnr   s     r+   r   zls.<locals>.<listcomp>7  s4    MMMUE!HeAh1L1LM5MMMr*   )rc   r   r   z&Limit must be a positive integer, got r   r   )r   r   rp   r3   r  typerExitr   r   BadParametertimer   r   r   rg   ry   r"   r#   r   r$   r   r%   r   )r  r/   r  r  r  r   r  rv   excfiltersr   
filter_fnssort_key_fnr   rW   rt   
formattersr  r   r   s                    @@@r+   lsr"    sZ   j*&y11 * * *@C,>,>@@AAAja   c)* lG2=T]^^^G]4TTTTGTTT

 4 4 4 S**34 )++C N NMMMMMgMMM  8	8#5dj#A#A KLL['L:::: 	8 	8 	8$SXX..C7	8 199$%Ve%V%V%VWWW&5&/ % 	S 	SND((*>(&&DMRRRR 	531J
 :fgR_````sD    
A:AA:B	 	
B:"B55B:'.D 
E "EEzQOne 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           	         	 t          |          }nK# t          $ r>}t          dt          |j                              t          j        d          d}~ww xY wt          ||           }|j        r+t          d           |j        D ]}t          d|            t          |j
                  dk    r$t          d           t          j        d           |j        t          |j
                   }t          |j                  }	g }
|	j        r|
                    |	j         d	           |	j        r|
                    |	j         d
           |
s|
                    |	j         d
           d                    |
          }t          d| d|j         d           t+          |j                   |rt          d           dS |s't          j        dd          st          d           dS |                                 t          |j                  }	t          d|	j         d|	j         d|j         d           dS )z(Remove cached repositories or revisions.r  r   r  Nz2Could not find the following targets in the cache:rk   r   zNothing to delete.z 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   rp   r3   r  r  r  r  r1   rT   r/   delete_revisionsrn   rX   r0   rK   r   rL   rM   rq   expected_freed_size_strru   confirmexecute)r   r  r#  r$  rv   r  
resolutionr   strategycountssummary_partssummary_texts               r+   rmr3  T  s   <!&y11 ! ! !@C,>,>@@AAAja    ! +='BBJ "BCCC' 	" 	"E...!!!!
:  A%%"###ja    -}-vj6J/K/KLH !455F!M = 1;;;<<<$ M =KKKLLL K ;IIIJJJ<<..L	
Y\
Y
Yh6V
Y
Y
YZZZ":#6777 /000 u}%=uMMM #$$$ !455F	 	H6$  	H  	H63N  	H  	Hdl  eE  	H  	H  	H        
A9AAc                    	 t          |           }nK# t          $ r>}t          dt          |j                              t          j        d          d}~ww xY wi }t                      }|j        D ]G}t          d |j
        D                       }|s#|||<   |                    d |D                        Ht          |          dk    rt          d           dS t          t          |          |d	
          }	 |j        t          |	j
                   }
t!          |          }t          d|j         d|
j         d           t'          |           |rt          d           dS |s%t          j        d          st          d           dS |
                                 t          d|j         d|
j         d           dS )z)Remove detached revisions from the cache.r  r   r  Nc              3   J   K   | ]}t          |j                  d k    |V  dS )r   N)rT   r=   r   rt   s     r+   r   zprune.<locals>.<genexpr>  s7      ``(HMHZHZ^_H_H_XH_H_H_H_``r*   c              3   $   K   | ]}|j         V  d S r[   rf   r7  s     r+   r   zprune.<locals>.<genexpr>  s%      GG(-GGGGGGr*   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   rp   r3   r  r  r  r  rx   r2   r/   updaterT   r.   r*  rn   rX   rM   r+  ru   r,  r-  )r  r#  r$  rv   r  r0   r/   rW   detachedr.  r/  r0  s               r+   pruner;    s#   0!&y11 ! ! !@C,>,>@@AAAja    ! EGH%%I# H H``dn````` 	!GGhGGGGGGG
9~~BCCC$I&&  J
 .}-vj6J/K/KLH **F	}66}}S[Ss}}}   #8,,, /000 u}Z00 "###	
vV0
v
vS[Ss
v
v
vwwwwwr4  r^   r]   rt   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                 V   |&|$t          d           t          j        d          t          |          }|                    | t          |d          r|j        nt          |          ||||          }	d}
t          |	j	                  }|rNt          d	           |	j	        D ]5}t          d
|d          d|d          d|d          d|d                     6d}
|	j
        rY|r.t          d           |	j
        D ]}t          d
|            d}
n)t          |	j
                   d}t          d|            |	j        rY|r.t          d           |	j        D ]}t          d
|            d}
n)t          |	j                   d}t          d|            |	j        }|
dk    rJt          d|  d|j         d| d           t          d|	j                    t          j        |
          t          d|	j         d|  d|j         d|            t          d           dS ) 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  )r?  r   )r^   r]   rt   r<  r  r?  r   u;   ❌ Checksum verification failed for the following file(s):rk   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.)rp   r  r  r   verify_repo_checksumshasattrr   r3   r   
mismatchesmissing_pathsrT   extra_pathsverified_pathrt   checked_count)r^   r]   rt   r  r<  r=  r>  r?  apiresult	exit_codehas_mismatchesmpwarningverified_locations                   r+   verifyrS    s   T !6STTTja    
5
!
!
!C&&%,Y%@%@T)//c)nn '  F I&+,,N KLLL" 	f 	fAd6ddq}dd+ddWXYaWbddeeee	 (  
	(EFFF) " "jQjj!!!!II v+,, ; ; ;  &W&&''' ( 
	(CDDD' " "jQjj!!!!II v)** 9 9 9  &W&&''',A~~dgdd)/ddPadddeee.V_..///ji((((	
s&.
s
sg
s
s)/
s
s`q
s
sttt	
"#####r*   )NFF)WrN   r%   r$   r  r   r  collectionsr   dataclassesr   enumr   typingr   r   r   r	   r
   r   r   r   r  utilsr   r   r   r   r   r   r   r   utils._parsingr   r   
_cli_utilsr   r   r   r   r   r   	cache_clir3   r"   r.   compiler   r   r   r   r   r   _sort_options_dictrn   rc   r&   rG   rJ   r   r2   RepoRefsMaprX   ru   r|   r   r   r   r   r   r   r   r   r   r6   r   r   r  commandr#   OptionrO   r"  Argumentr3  r;  modelrS  r)   r*   r+   <module>rc     s   O N 



  				 



  # # # # # # ! ! ! ! ! !       Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 8 7 7 7 7 7 7 7 ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` M>???	    3    $        "*abb666 ???555

LMM     6* 6 6C!s*-|||#|||$+.#}}}%%d="43xPPP $        >8,>#??@
>9S>12Tni8J.KKLTT T T T$XW^YWiMj=j5k Xpt X X X 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	   .T*%5 .T .bm .rv . . . .b8E?  E d    (3# 3%*uSRUX9V0WY]0]*^ 3 3 3 3l&[ &49 &Qd & & & &X  	 	 	 	 	 	 	c^a ^aL	
 	
 	
	^a V	
 	
 	
	^a cm	
 	
 	
	^a* !	
 	
 	
	+^a6 @	
 	
 	
	7^aF 7	
 	
 	
	G^aX f	
 	
 	
	Y^ad 
e^a ^a ^a ^aB  	 	 	5I IS	d	
 	
 	
	I L	
 	
 	
	I 
,	
 	
 	
	
I* ?	
 	
 	
	+I6 
7I I I IX  	 	 	)@x @xL	
 	
 	
	@x 
,	
 	
 	
	
@x ?	
 	
 	
	@x* 
+@x @x @x @xF  ).  	 	 	 	=c$ c$c$c$ c$ k	
 	
 	
		c$ R	
 	
 	
	c$  %%R	
 	
 	
	!c$. ##_	
 	
 	
	/c$< =c$> 
?c$ c$ c$ c$ c$ c$r*   