
    "jkg                     *	   d Z ddlZddlZddlmZ ddlmZmZ ddlm	Z	 ddl
mZ ddlmZmZ ddlZddlmZ d	d
l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#m$Z$ ddl%m&Z&m'Z'  e$d          Z( e	d           G d d                      Z) ej*        d          Z+h dZ,h dZ-h dZ. ej*        d          Z/dddddZ0i Z1 e2e.          D ]Z3e3e1e3<   e3 de1e3 d<   e3 de1e3 d <    ed!e1e4e5"          Z6 e	d           G d# d$                      Z7e8eedz  f         Z9e:ee;e4         f         Z<d%eee;e         f         d&e7fd'Z=d%eee;e         f         d&dfd(Z>d)ed&e8e:e4ef         e:e4e8eef         f         f         fd*Z?d)ed+e@d&e8eAe9         e<f         fd,ZBd-e4d.e<d&eeedz  eCge@f         fd/ZDd0eCdz  d1e4d2eCd&e@fd3ZEd4e4d&e8ee9ge8ed5f         f         e@f         fd6ZFd)ed7eAe4         d&e)fd8ZGe(H                    d9g d:;          dd<de&jI        ddfd=ee4dz   ejJ        d>          f         d?ee@ ejJ        d@          f         dAeeAe4         dz   ejJ        dBdCdD          f         dEedFee6dz   ejJ        dG          f         dHeeKdz   ejJ        dI          f         d&dfdJ            ZLe(H                    g dK;          dd<d<e&jI        fd7eeAe4          ejM        dL          f         d=ee4dz   ejJ        d>          f         dMee@ ejJ        dNdOdP          f         dQee@ ejJ        dR          f         dEed&dfdS            ZNe(H                    dTdUg;          dd<d<e&jI        fd=ee4dz   ejJ        d>          f         dMee@ ejJ        dNdOdP          f         dQee@ ejJ        dR          f         dEed&df
dV            ZOe(H                    g dW;          e jP        dddd<d<de&jI        fdXedYe dZe!d=ee4dz   ejJ        d[          f         d\ee4dz   ejJ        d]          f         d^ee@ ejJ        d_d`          f         daee@ ejJ        dbdc          f         dde"dEed&dfde            ZQdS )fzHContains 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scan_cache_dir)parse_duration
parse_size   )FormatWithAutoOpt	RepoIdArgRepoTypeOptRevisionOptTokenOpt
get_hf_apityper_factory)OutputFormatWithAutooutzManage local cache directory.)helpT)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)
__name__
__module____qualname__	frozensetstr__annotations__dictr   r   tuple     c/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/huggingface_hub/cli/cache.pyr"   r"   (   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>   namer8   r:   r;   z.^(?P<key>[a-zA-Z_]+)(?::(?P<order>asc|desc))?$descasc)r:   r;   r8   r<   z:asc_ascz:desc_descSortOptions)r9   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__intr+   r.   r/   r0   rD   rD   G   s9         HHOOOr/   rD   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#   rD   )rJ   rE   total_revisionsrevisions_in_full_reposrepor#   rF   s          r0   summarize_deletionsrR   T   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          j        d| d           it          j        d| d           |D ]R}d                    t          |j	                            pd	}t          j        d
|j
         d| d|j                    SdS )zBPretty-print selected cache revisions during confirmation prompts.c                 B    | j         | j                                        fS N	repo_typerepo_idlowerrQ   s    r0   <lambda>z0print_cache_selected_revisions.<locals>.<lambda>h   s    $.RVR^RdRdRfRfAg r/   key/c                     | j         S rU   commit_hashrevs    r0   r[   z0print_cache_selected_revisions.<locals>.<lambda>j       3? r/     - z (entire repo): z
(detached)z      z [z] N)sortedkeysrW   rX   rN   r#   r   textjoinr7   ra   size_on_disk_str)rJ   rQ   repo_keyr#   revisionr7   s         r0   print_cache_selected_revisionsro   f   s/   ',,..4g4ghhh 
[ 
[n55t|55+D17R7RSSS	y>>S0000H4H444555####$$$! 	[ 	[H88F8=1122BlDHYh2YYdYYh>WYYZZZZ	[
[ 
[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_idrY   r#   ra   )rp   repo_lookuprevision_lookuprQ   rm   rn   s         r0   build_cache_indexrv   u   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 rU   rV   rZ   s    r0   r[   z'collect_cache_entries.<locals>.<lambda>   s    QUQ]QcQcQeQe@f r/   r\   c                 &    h | ]}|j         D ]}|S r.   )r7   ).0rn   refs      r0   	<setcomp>z(collect_cache_entries.<locals>.<setcomp>   s*    (e(e(eW_Wd(e(ePS(e(e(e(er/   c                     | j         S rU   r`   rb   s    r0   r[   z'collect_cache_entries.<locals>.<lambda>   rd   r/   Nc                 J    | d         j         | d         | d         j        ndfS )Nr   r    )rs   ra   entrys    r0   r[   z'collect_cache_entries.<locals>.<lambda>   s+    a!(-a(<a$$" r/   c                     | d         j         S )Nr   )rs   r   s    r0   r[   z'collect_cache_entries.<locals>.<lambda>   s    uQx'8 r/   )rh   rr   r)   r#   appendsort)rp   rw   entriesrepo_refs_mapsorted_reposrQ   rn   s          r0   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           
      0  	
 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 rJt                                                    	dt          dt          dz  dt          dt          f	fd}|S dk    rT                                dk    rt          d d          dt          dt          dz  dt          dt          ffd}|S dk    rt          d d	          dt          dt          dz  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'.r]   opvaluezUnsupported operator 'z' in filter ''. Must be one of .zUnsupported filter key '' in 'r8   c                 B    t          ||j        n| j                  S rU   )_compare_numericsize_on_disk)rQ   rn   _r   size_thresholds      r0   r[   z&compile_cache_filter.<locals>.<lambda>   s+    )9%-%9H!!t?P*
 *
 r/   >   r:   r;   rQ   rn   NnowrK   c                 n    dk    r| j         n||j        n| j        }|dS t          ||z
            S )Nr:   F)last_accessedlast_modifiedr   )rQ   rn   r   	timestampr]   r   secondss       r0   _time_filterz*compile_cache_filter.<locals>._time_filter   s\     *$$ "" ' ++'   u#C)ORAAAr/   r9   r2   z/Only '=' is supported for 'type' filters. Got 'r   c                 >    | j                                         k    S rU   )rW   rY   )rQ   rn   r   expecteds      r0   _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.   )rY   )r{   r|   s     r0   
<listcomp>z>compile_cache_filter.<locals>._refs_filter.<locals>.<listcomp>   s     (E(E(E(E(E(Er/   )r7   getr)   rY   )rQ   rn   r   r7   r   	value_raws       r0   _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grouprY   _ALLOWED_OPERATORSlist_FILTER_KEYSr   r   r   r   floatbool)r   r   r   r   r   r   r   r]   r   r   r   r   s    `    @@@@@@r0   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9Kd9R 
	BY^ 
	Bcg 
	B 
	B 
	B 
	B 
	B 
	B 
	B 
	B 
f}}??$$99UrUUUVVV	6~ 	69Kd9R 	6W\ 	6ae 	6 	6 	6 	6 	6 	6  99SbSSSTTT	F~ 	F9Kd9R 	FW\ 	Fae 	F 	F 	F 	F 	F 	F 	F r/   leftr   rightc                     | dS | |k    | |k    | |k    | |k     | |k    | |k    d}||vrt          d|           ||         S )z)Evaluate numeric comparisons for filters.NF)r2   r4   r3   r1   r6   r5   z)Unsupported numeric comparison operator: )r   )r   r   r   comparisonss       r0   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'.r]   orderzUnsupported sort key 'r   r   r   r=   r   rK   .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           )Nr<   r8   r:   g        r;   zUnsupported sort key: )rs   rY   r   r   r   r   )r   rQ   rn   r   r]   s       r0   	_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   rY   r   r   
_SORT_KEYSr   _SORT_DEFAULT_ORDER
CacheEntryr-   r	   )r   r   explicit_orderr   reverser   r]   s         @r0   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.   )r)   )r{   rQ   revss      r0   
<dictcomp>z-_resolve_deletion_targets.<locals>.<dictcomp>L  s$    PPPttYt__PPPr/   r#   r$   r%   )rv   r   setr   rY   re	fullmatchr   r   addra   r#   rM   r"   r)   r-   )rp   r   rt   ru   r$   r#   r%   
raw_targettargetloweredr   rQ   rn   matched_repofrozen_selecteds                  r0   _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/   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.formatr   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          |           }n*# t          $ r}t          d|j                   |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
 |	D             }t          j        |g ddddi           n*fd|	D             }t          j        |g ddddi           |	rd |	D             }t          |          }|r3t!          d |	D                       }t!          d |	D                       }n2t!          d |D                       }t!          d |D                       }t          j        t%          j        d| d| dt)          |           d                     dS dS )z&List cached repositories or revisions.Cache directory not found: N)rw   c                 0    g | ]}t          |          S r.   )r   )r{   r   r   s     r0   r   zls.<locals>.<listcomp>  s$    TTTD*4??TTTr/   c                 F    g | ]} |d          |d                   |S )r   r   r.   )r{   r   fnr   s     r0   r   zls.<locals>.<listcomp>  s4    MMMUE!HeAh1L1LM5MMMr/   )r]   r   r   z&Limit must be a positive integer, got r   c                     g | ]T\  }}||j         |j        |j        |j        t	          |j                  |j        |j        t          |j	                  dUS )N)idrX   rW   rn   snapshot_pathr8   r   r7   )
rs   rX   rW   ra   r*   r   rl   last_modified_strrh   r7   )r{   rQ   rn   s      r0   r   zls.<locals>.<listcomp>  ss     
 
 
 h# m<!^$0!$X%;!<!< 1!)!;x}--	 	 $##r/   )r   rn   r8   r   r7   rn   r8   r   )headersid_key
alignmentsc                     g | ]\\  }}|j         |j        |j        |j        |j        pd |j        t                              |t                                          d]S )r   )r   rX   rW   r8   r   r   r7   )	rs   rX   rW   rl   last_accessed_strr   rh   r   r)   )r{   rQ   r   r   s      r0   r   zls.<locals>.<listcomp>  s{     
 
 
 a m<!^-!%!7!=2!%!7}00y{{CCDD 
 
 
r/   )r   r8   r   r   r7   r   c                     h | ]\  }}|S r.   r.   )r{   rQ   r   s      r0   r}   zls.<locals>.<setcomp>  s    444q444r/   c              3   $   K   | ]\  }}|dV  d S )Nr   r.   r{   r   rc   s      r0   	<genexpr>zls.<locals>.<genexpr>  s&       L Lvq#COOOOO L Lr/   c              3   .   K   | ]\  }}||j         V  d S rU   r   r   s      r0   r   zls.<locals>.<genexpr>  s)      WW&!SsS-WWr/   c              3   >   K   | ]}t          |j                  V  d S rU   )rN   r#   r{   rQ   s     r0   r   zls.<locals>.<genexpr>  s,       N NT^!4!4 N N N N N Nr/   c              3   $   K   | ]}|j         V  d S rU   r   r   s     r0   r   zls.<locals>.<genexpr>  s%      HH4T.HHHHHHr/   z
Found z repo(s) for a total of z revision(s) and z	 on disk.)r   r   r
   r   r   r   typerBadParameterr*   timer   r   r   r   tablerN   sumrj   r   boldr   )r   r#   r   r   r   r   rp   excfiltersr   
filter_fnssort_key_fnr   rM   unique_reposrE   revision_count
total_sizer   r   r   s                     @@@r0   lsr   W  s   `O&y11 O O ODS]DDEE3NO 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&/ '

 
 #*
 
 
 		GGG(		
 	
 	
 	
 	

 
 
 
 #
 
 
 		LLL(		
 	
 	
 	
  
44G444&&
 	I  L L L L LLLNWWGWWWWWJJ  N N N N NNNNHH<HHHHHJI<: < <~ < <$Z00< < < 	
 	
 	
 	
 	

 
s@    
<7<A' '
B1"BB.C4 4
D%>"D  D%)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           	         	 t          |          }n*# t          $ r}t          d|j                   |d}~ww xY wt	          ||           }|j        r;d                    d |j        D                       }t          j        d|            t          |j
                  dk    r)t          j        d           t          j        d           |j        t          |j
                   }	t!          |j                  }
g }|
j        r|                    |
j         d	           |
j        r|                    |
j         d
           |s|                    |
j         d
           d                    |          }t          j        d| d|	j         d           t/          |j                   |r*t          j        dd|
j        |
j        |	j                   dS t          j        d|           |	                                 t!          |j                  }
t          j        d|
j         d|
j         d|	j         d|
j        |
j        |	j                   dS )z(Remove cached repositories or revisions.r   N
c              3       K   | ]	}d | V  
dS re   Nr.   )r{   r   s     r0   r   zrm.<locals>.<genexpr>  s(      KKuN5NNKKKKKKr/   zCould not find in cache:
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.T)r   rr   r#   r8   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%   rk   r   warningrN   r#   rj   r   Exitdelete_revisionsrh   rR   r$   rE   r   rF   rG   expected_freed_size_strro   resultconfirmexecute)r   r   r   r   r   rp   r   
resolutiondetailsstrategycountssummary_partssummary_texts                r0   rmr    s   LO&y11 O O ODS]DDEE3NO +='BBJ <))KK
8JKKKKK:::;;;
:  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H\\\9Y\\\]]]":#6777 
-#11	
 	
 	
 	
 	K(c2222 !455FJ	66$ 	6 	663N 	6 	62	6 	6 	6' 5.         
949zhf cache prunezhf cache prune --dry-runc                    	 t          |           }n*# t          $ r}t          d|j                   |d}~ww xY wi }t	                      }|j        D ]G}t          d |j        D                       }	|	s#|	||<   |                    d |	D                        Ht          |          dk    rt          j        d           dS t          t          |          |d          }
 |j        t          |
j                   }t          |          }t          j        d	|j         d
|j         d           t%          |           |r$t          j        dd|j        |j                   dS t          j        d|           |                                 t          j        d|j         d|j         d|j        |j                   dS )z)Remove detached revisions from the cache.r   Nc              3   J   K   | ]}t          |j                  d k    |V  dS )r   N)rN   r7   r{   rn   s     r0   r   zprune.<locals>.<genexpr>\  s7      ``(HMHZHZ^_H_H_XH_H_H_H_``r/   c              3   $   K   | ]}|j         V  d S rU   r`   r  s     r0   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  T)r   r#   r8   zProceed?r  r  z! unreferenced revision(s); freed r   )r  r	  )r   r   r
   r   r   rr   r)   r#   updaterN   r   rj   r"   r  rh   rR   rG   r  ro   r  r  r  )r   r   r   r   rp   r   r$   r#   rQ   detachedr  r  r  s                r0   pruner  ;  s6   2O&y11 O O ODS]DDEE3NO EGH%%I# H H``dn````` 	!GGhGGGGGGG
9~~EFFF$I&&  J
 .}-vj6J/K/KLH **FH}66}}S[Ss}}}   #8,,, 
-11		
 	
 	
 	
 	K
$$$$Jt6.ttQYQqttt 5.     r  )zhf cache verify gpt2z)hf cache verify gpt2 --revision refs/pr/1z.hf cache verify my-dataset --repo-type datasetrX   rW   rn   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	           
      j   |+|)t          j        d           t          j        d          t	          |          }	|	                    | t          |d          r|j        nt          |          ||||          }
d}|
j	        r=d	
                    d
 |
j	        D                       }t          j        d|            d}|
j        ri|r>d	
                    d |
j        D                       }t          j        d|            d}n)t          j        t          |
j                   d           |
j        ri|r>d	
                    d |
j        D                       }t          j        d|            d}n)t          j        t          |
j                   d           |
j        }|dk    r?t          j        d|  d|j         d| d|
j                    t          j        |          t          j        d|
j         d|j         d|  d| |j        |
j        t          |                     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   )rX   rW   rn   r   r   r#  r   r   c           
   3   b   K   | ]*}d |d          d|d          d|d          d|d          V  +dS )	re   pathz: expected r   z (	algorithmz), got actualNr.   )r{   ms     r0   r   zverify.<locals>.<genexpr>  sj       
 
 _1V9^^:^^!K.^^QRS[Q\^^
 
 
 
 
 
r/   u<   ❌ Checksum verification failed for the following file(s):
r   c              3       K   | ]	}d | V  
dS r   r.   r{   ps     r0   r   zverify.<locals>.<genexpr>  s(      IIq
q

IIIIIIr/   u6   ❌ Missing files (present remotely, absent locally):
zM remote file(s) are missing locally. Use --fail-on-missing-files for details.c              3       K   | ]	}d | V  
dS r   r.   r+  s     r0   r   zverify.<locals>.<genexpr>  s(      GGq
q

GGGGGGr/   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.)rX   rW   checkedr&  )r   errorr   r  r   verify_repo_checksumshasattrr   r*   
mismatchesrk   rj   missing_pathsr
  rN   extra_pathsverified_pathrn   r  checked_count)rX   rW   rn   r   r   r!  r"  r#  r   apir  	exit_coder  verified_locations                 r0   verifyr:    s   b !6	WXXXja    
5
!
!
!C&&%,Y%@%@T)//c)nn '  F I )) 
 
&
 
 
 
 
 	ZQXZZ[[[	 	  	iiIIF4HIIIIIGHXwXXYYYIIKv+,, ; ; ;  
  	 	iiGGF4FGGGGGGHVWVVWWWIIKv)** 9 9 9  
 ,A~~	}}}IO}}J[}}lrl{}}	
 	
 	
 ji((((JjF(jjyjj'jjj/$"##     r/   )RrH   r   r   collectionsr   collections.abcr   r   dataclassesr   enumr   typingr   r	   r   huggingface_hub.errorsr
   utilsr   r   r   r   r   r   r   utils._parsingr   r   
_cli_utilsr   r   r   r   r   r   r   _outputr   r   	cache_clir"   compiler   r   r   r   r   r   _sort_options_dictrh   r]   r*   r&   rA   rD   r-   r   r,   r)   RepoRefsMaprR   ro   rv   r   r   r   r   r   r   r   r   commandautoOptionrI   r   Argumentr  r  modelr:  r.   r/   r0   <module>rN     sQ
   O N 				  # # # # # # - - - - - - - - ! ! ! ! ! !       ! ! ! ! ! ! ! !  + + + + + + v v v v v v v v v v v v v v v v v v 7 7 7 7 7 7 7 7 s s s s s s s s s s s s s s s s s s . . . . . . . . M>???	 $        "*abb666 ???555

LMM     6* 6 6C!s*-|||#|||$+.#}}}%%d="43xPPP $        >#5#<<=
>9S>12Tni8J.KKLTT T T T$[W^YWiMj=j5k [pt [ [ [ [((
n	eN$667	78:( ( ( ("""6:"
4
[()" " " "4>
>)>~1D8%@$FG> > > >B54< S  4    (3# 3%*uSRUX9V0WY]0]*^ 3 3 3 3l&[ &49 &Qd & & & &X       	 	 	 4 9 	 	I}
 }
d
L	
 	
 	
	}
 V	
 	
 	
	}
 S	Dm	
 	
 	
	}
* +}
, d7	
 	
 	
	-}
> d
f	
 	
 	
	?}
J 
K}
 }
 }
 }
@      ( 	 	 	 4 97P PS	d	
 	
 	
	P d
L	
 	
 	
	P 
,	
 	
 	
	
P* ?	
 	
 	
	+P6 7P8 
9P P P Pf -/IJKK 	 	 	 4 9+G Gd
L	
 	
 	
	G 
,	
 	
 	
	
G ?	
 	
 	
	G* +G, 
-G G G LKGT       ).  	 	 	 	 4 9?g ggg g d
k	
 	
 	
		g d
R	
 	
 	
	g  %%R	
 	
 	
	!g. ##_	
 	
 	
	/g< =g> ?g@ 
Ag g g g g gr/   