
    -:jh                        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mZ d	dlmZmZ ddlmZm Z m!Z!m"Z"m#Z#m$Z$ ddl%m&Z&  e$d      Z' e	d       G d d             Z( ejR                  d      Z*h dZ+h dZ,h dZ- ejR                  d      Z.dddddZ/i Z0 e1e-      D ]  Z2e2e0e2<   e2 de0e2 d<   e2 de0e2 d <     ed!e0e3e4"      Z5 e	d       G d# d$             Z6e7eedz  f   Z8e9ee:e3   f   Z;d%eee:e   f   d&e6fd'Z<d%eee:e   f   d&dfd(Z=d)ed&e7e9e3ef   e9e3e7eef   f   f   fd*Z>d+e3d&e3fd,Z?d)ed-e@d&e7eAe8   e;f   fd.ZBd/e3d0e;d&eeedz  eCge@f   fd1ZDd2eCdz  d3e3d4eCd&e@fd5ZEd6e3d&e7ee8ge7ed7f   f   e@f   fd8ZFd)ed9eAe3   d&e(fd:ZGe'j                  d;g d<=      	 	 	 	 	 dgd?ee3dz   ej                  d@      f   dAee@ ej                  dB      f   dCeeAe3   dz   ej                  dDdEdF      f   dGee5dz   ej                  dH      f   dIeeJdz   ej                  dJ      f   d&dfdK       ZKe'j                  g dL=      	 	 	 dhd9eeAe3    ej                  dM      f   d?ee3dz   ej                  d@      f   dNee@ ej                  dOdPdQ      f   dRee@ ej                  dS      f   d&df
dT       ZMe'j                  dUdVg=      	 	 	 dhd?ee3dz   ej                  d@      f   dNee@ ej                  dOdPdQ      f   dRee@ ej                  dS      f   d&dfdW       ZNe'j                  g dX=      e j                  dddd>d>dfdYedZe d[e!d?ee3dz   ej                  d\      f   d]ee3dz   ej                  d^      f   d_ee@ ej                  d`da      f   dbee@ ej                  dcdd      f   dee"d&dfdf       ZPy)izHContains 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)outzManage local cache directory.)helpT)frozenc                   L    e Zd ZU ee   ed<   eeee   f   ed<   e	edf   ed<   y)_DeletionResolution	revisionsselected.missingN)
__name__
__module____qualname__	frozensetstr__annotations__dictr   r   tuple     [/var/www/html/tokenscope/api/venv/lib/python3.12/site-packages/huggingface_hub/cli/cache.pyr!   r!   1   s0    ~>9-?#@@AA38_r.   r!   zA^(?P<key>[a-zA-Z_]+)\s*(?P<op>==|!=|>=|<=|>|<|=)\s*(?P<value>.+)$>   <=>!=<=>=>   refssizetypeaccessedmodified>   namer7   r9   r:   z.^(?P<key>[a-zA-Z_]+)(?::(?P<order>asc|desc))?$descasc)r9   r:   r7   r;   z:asc_ascz:desc_descSortOptions)r8   modulec                   0    e Zd ZU dZeed<   eed<   eed<   y)CacheDeletionCountsz>Simple counters summarizing cache deletions for CLI messaging.
repo_countpartial_revision_counttotal_revision_countN)r%   r&   r'   __doc__intr*   r-   r.   r/   rC   rC   P   s    HOr.   rC   selected_by_reporeturnc                     d}d}d}| j                         D ]H  \  }}|t        |      z  }t        |      t        |j                        k(  s6|dz  }|t        |      z  }J ||z
  }t        |||      S )z(Summarize deletions across repositories.r   r   )itemslenr"   rC   )rI   rD   total_revisionsrevisions_in_full_reposrepor"   rE   s          r/   summarize_deletionsrQ   ]   s     JO+113 6i3y>)y>S00!OJ#s9~5#	6 -/FFz+A?SSr.   c           
         t        | j                         d       D ]  }|j                   d|j                   }t        | |   d       }t	        |      t	        |j
                        k(  rt        j                  d| d       jt        j                  d| d       |D ]\  }dj                  t        |j                              xs d	}t        j                  d
|j                   d| d|j                          ^  y)zBPretty-print selected cache revisions during confirmation prompts.c                 N    | j                   | j                  j                         fS N	repo_typerepo_idlowerrP   s    r/   <lambda>z0print_cache_selected_revisions.<locals>.<lambda>q   s    $..RVR^R^RdRdRfAg r.   key/c                     | j                   S rT   commit_hashrevs    r/   rZ   z0print_cache_selected_revisions.<locals>.<lambda>s   
    3?? r.     - z (entire repo): z
(detached)z      z [z] N)sortedkeysrV   rW   rM   r"   r   textjoinr6   r`   size_on_disk_str)rI   rP   repo_keyr"   revisionr6   s         r/   print_cache_selected_revisionsrn   o   s    ',,.4gh 
[nn%Qt||n5+D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	[
[r.   hf_cache_infoc                     i }i }| j                   D ]Q  }|j                  j                         }|||<   |j                  D ]!  }||f||j                  j                         <   # S ||fS )zPCreate lookup tables so CLI commands can resolve repo ids and revisions quickly.)reposcache_idrX   r"   r`   )ro   repo_lookuprevision_lookuprP   rl   rm   s         r/   build_cache_indexru   ~   s     .0KLNO## M==&&( $H 	MH=A8<LOH006689	MM
 ''r.   targetc                     | j                  d      s| S t        |       }|j                  st        d      |j                  |j
                  rt        d      |j                   d|j                   S )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.r]   )
startswithr   is_repor
   rm   path_in_repor8   id)rv   uris     r/   _repo_cache_id_from_targetr}      si    W%
v
C;;STT
||3#3#3[\\hhZq!!r.   include_revisionsc          	         g }i }t        | j                  d       }|D ]  }t        |j                  D ch c]  }|j                  D ]  }|  c}}      ||<   |r1t        |j                  d       D ]  }|j                  ||f        o|j                  |df        |r|j                  d        ||fS |j                  d        ||fS c c}}w )z;Flatten cache metadata into rows consumed by `hf cache ls`.c                 N    | j                   | j                  j                         fS rT   rU   rY   s    r/   rZ   z'collect_cache_entries.<locals>.<lambda>   s    QUQ]Q]QcQcQe@f r.   r[   c                     | j                   S rT   r_   ra   s    r/   rZ   z'collect_cache_entries.<locals>.<lambda>   rc   r.   Nc                 N    | d   j                   | d   | d   j                  fS dfS )Nr   r    )rr   r`   entrys    r/   rZ   z'collect_cache_entries.<locals>.<lambda>   s6    a!!(-a(<a$$ BD r.   c                      | d   j                   S )Nr   )rr   r   s    r/   rZ   z'collect_cache_entries.<locals>.<lambda>   s    uQx'8'8 r.   )rg   rq   r(   r"   r6   appendsort)ro   r~   entriesrepo_refs_mapsorted_reposrP   rm   refs           r/   collect_cache_entriesr      s     !#G!#M---3fgL )'T^^(eW_WdWd(ePS(e(efd"4>>7RS 1h/01 NND$<()  	 	
 M!! 	89M!! )fs   Cexprr   c           
      v  	
 t         j                  | j                               }|st        d|  d      |j	                  d      j                         |j	                  d      |j	                  d      j                         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 r>t        j                               	dt        dt        dz  dt        dt        f	fd}|S dk(  rGj                         dk7  rt        d d      dt        dt        dz  dt        dt        ffd}|S dk7  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 'r7   c                 Z    t        ||j                        S | j                        S rT   )_compare_numericsize_on_disk)rP   rm   _r   size_thresholds      r/   rZ   z&compile_cache_filter.<locals>.<lambda>   s7    )9%-%9H!!*
 ?C?P?P*
 r.   >   r9   r:   rP   rm   NnowrJ   c                     dk(  r| j                   n||j                  n| j                  }|yt        ||z
        S )Nr9   F)last_accessedlast_modifiedr   )rP   rm   r   	timestampr\   r   secondss       r/   _time_filterz*compile_cache_filter.<locals>._time_filter   sW     *$ "" ' ++''   #C)ORAAr.   r8   r1   z/Only '=' is supported for 'type' filters. Got 'r   c                 >    | j                   j                         k(  S rT   )rV   rX   )rP   rm   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j                  | t                     }j                         |D cg c]  }|j                          c}v S c c}w rT   )r6   getr(   rX   )rP   rm   r   r6   r   r   	value_raws        r/   _refs_filterz*compile_cache_filter.<locals>._refs_filter   sK    $,$88==m>O>OPTV_Va>bD??$(E(EEE(Es   A)_FILTER_PATTERNmatchstrip
ValueErrorgrouprX   _ALLOWED_OPERATORSlist_FILTER_KEYSr   r   r   r   floatbool)r   r   r   r   r   r   r   r\   r   r   r   r   s    `    @@@@@@r/   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 
f}??$9NrdRTUVV	6~ 	69Kd9R 	6W\ 	6ae 	6  9MbTQRSTT	F~ 	F9Kd9R 	FW\ 	Fae 	F r.   leftr   rightc                 l    | y| |k(  | |k7  | |kD  | |k  | |k\  | |k  d}||vrt        d|       ||   S )z)Evaluate numeric comparisons for filters.F)r1   r3   r2   r0   r5   r4   z)Unsupported numeric comparison operator: )r   )r   r   r   comparisonss       r/   r   r      sd    | U]emE\E\ememK 
DRDIJJr?r.   	sort_expr.c           
         t         j                  | j                         j                               }|st	        d|  d      |j                  d      j                         |j                  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   rJ   .c                    | \  }}dk(  r|j                   j                         }|fS dk(  r ||j                  }|fS |j                  }|fS dk(  r |j                  |j                  }|fS d}|fS dk(  r?| |j                  |j                  }|fS d}|fS |j                  |j                  nd}|fS t        d       )Nr;   r7   r9   g        r:   zUnsupported sort key: )rr   rX   r   r   r   r   )r   rP   rm   r   r\   s       r/   	_sort_keyz%compile_cache_sort.<locals>._sort_key   s   h&=,,.E8O&=-5-AH))E8O HLGXGXE8O* +/*<*<*HD&&E8O ORE8O*#2:2H2H2T.. 8O [^ 8O /3.@.@.L**RU8O 1#788r.   )_SORT_PATTERNr   r   rX   r   r   
_SORT_KEYSr   _SORT_DEFAULT_ORDER
CacheEntryr,   r	   )r   r   explicit_orderr   reverser   r\   s         @r/   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< gr.   targetsc                 (   t        |       \  }}t        t              }t               }g }|D ]  }|j                         }|s|j	                         }	t        j                  d|	      rZ|j                  |	      }
|
|j                  |       b|
\  }}||   j                  |       |j                  |j                         |j                  t        |      j	                               }||j                  |       |j                  D ]1  }||   j                  |       |j                  |j                         3  |j                         D ci c]  \  }}|t        |       }}}t        t        |      |t!        |            S c c}}w )z8Resolve the deletion targets into a deletion resolution.z[0-9a-fA-F]{40}r"   r#   r$   )ru   r   setr   rX   re	fullmatchr   r   addr`   r}   r"   rL   r(   r!   r,   )ro   r   rs   rt   r#   r"   r$   
raw_targetrv   loweredr   rP   rm   matched_reporevsfrozen_selecteds                   r/   _resolve_deletion_targetsr   A  st   #4]#C K>I#>NH%IG 0
!!#,,.<<*G4#''0E}z*"ND(TNx(MM(../"'A&'I'O'O'QRNN:&$.. 	0H\"&&x0MM(../	0+02 @H~~?OPttYt_,PO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.c                    	 t        |       }|xs g }t	        ||      \  }}		 |D 
cg c]  }
t        |
|	       }}
t        j                         }|D ]"  }|D cg c]  } ||d   |d   |      s| }}$ |r,	 t        |j                        \  }}|j                  ||       |#|dk  rt        j                  d| d      |d| }|r|D cg c]t  \  }}|m|j                  |j                  |j                   |j"                  t        |j$                        |j&                  |j(                  t+        |j,                        d	v }}}t/        j0                  |g d
dddi       n|D cg c]p  \  }}|j                  |j                  |j                   |j&                  |j2                  xs d|j(                  t+        |	j5                  |t7                           dr }}}t/        j0                  |g ddddi       |r|D ch c]  \  }}|	 }}}t9        |      }|r%t;        d |D              }t;        d |D              }n$t;        d |D              }t;        d |D              }t/        j<                  t?        j@                  d| d| dtC        |       d             yy# t        $ r}t        d|j                         |d}~ww xY wc c}
w # t        $ r$}t        j                  t        |            |d}~ww xY wc c}w # t        $ r$}t        j                  t        |            |d}~ww xY wc c}}w c c}}w c c}}w )z&List cached repositories or revisions.Cache directory not found: N)r~   r   r   )r\   r   z&Limit must be a positive integer, got r   )r{   rW   rV   rm   snapshot_pathr7   r   r6   )r{   rm   r7   r   r6   rm   r7   r   )headersid_key
alignmentsr   )r{   rW   rV   r7   r   r   r6   )r{   r7   r   r   r6   r{   c              3   ,   K   | ]  \  }}|	d  y w)Nr   r-   .0r   rb   s      r/   	<genexpr>zls.<locals>.<genexpr>  s      Lvq#CO Ls   
c              3   @   K   | ]  \  }}|	|j                     y wrT   r   r   s      r/   r   zls.<locals>.<genexpr>  s     W&!SsS--Ws   
c              3   F   K   | ]  }t        |j                          y wrT   )rM   r"   r   rP   s     r/   r   zls.<locals>.<genexpr>  s      NT^^!4 Ns   !c              3   4   K   | ]  }|j                     y wrT   r   r   s     r/   r   zls.<locals>.<genexpr>  s     H4T..H   z
Found z repo(s) for a total of z revision(s) and z	 on disk.)"r   r   r
   r   r   r   r   typerBadParameterr)   timer   r   r   rr   rW   rV   r`   r   rk   last_modified_strrg   r6   r   tablelast_accessed_strr   r(   rM   sumri   r   boldr   )r   r"   r   r   r   ro   excfiltersr   r   r   
filter_fnsr   fnr   sort_key_fnr   rP   rm   rL   r   unique_reposrD   revision_count
total_sizes                            r/   lsr   m  se   ^O&y1 lG2=T]^G]4LSTD*4?T
T ))+C N&-MUE!HeAh1L5MMN 	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4q44&
  L LLNWGWWJ  N NNNH<HHJII:,&>~>N O$Z01<	
 M  O4S]]ODE3NO U 4  S*34
 N  	8$$SX.C7	8
*
( 5sv   J/ K KK L0L;+L A9M1A5M	M/	K8KKK 	L'LL	M L;;M )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           	      8   	 t        |      }t	        ||       }|j
                  r:dj                  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'                  |	j$                   d	       |	j(                  r|
j'                  |	j(                   d
       |
s|
j'                  |	j*                   d
       dj                  |
      }t        j                  d| d|j,                   d       t/        |j"                         |r9t        j0                  dd|	j$                  |	j*                  |j,                         yt        j2                  d|       |j5                          t!        |j"                        }	t        j0                  d|	j$                   d|	j*                   d|j,                   d|	j$                  |	j*                  |j,                         y# t        $ r}t        d|j                         |d}~ww xY w)z(Remove cached repositories or revisions.r   N
c              3   &   K   | ]	  }d |   ywrd   Nr-   )r   r   s     r/   r   zrm.<locals>.<genexpr>#  s     Kud5'NK   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   rq   r"   r7   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$   rj   r   warningrM   r"   ri   r   Exitdelete_revisionsrg   rQ   r#   rD   r   rE   rF   expected_freed_size_strrn   resultconfirmexecute)r   r   r   r   ro   r   
resolutiondetailsstrategycountssummary_partssummary_texts               r/   rmr    sK   LO&y1 +='BJ))K
8J8JKK0	:;
: A%%&jja  -}--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   I2 2	J;JJzhf cache prunezhf cache prune --dry-runc                    	 t        |       }i }t	               }|j
                  D ]>  }t        d |j                  D              }|s"|||<   |j                  d |D               @ t        |      dk(  rt        j                  d       yt        t        |      |d      }	 |j                  t        |	j                         }
t        |      }t        j                  d	|j                    d
|
j"                   d       t%        |       |r.t        j&                  dd|j                   |
j"                         yt        j(                  d|       |
j+                          t        j&                  d|j                    d|
j"                   d|j                   |
j"                         y# t        $ r}t        d|j                         |d}~ww xY w)z)Remove detached revisions from the cache.r   Nc              3   R   K   | ]  }t        |j                        d k(  s| ! yw)r   N)rM   r6   r   rm   s     r/   r   zprune.<locals>.<genexpr>p  s!     `(HMMHZ^_H_X`s   ''c              3   4   K   | ]  }|j                     y wrT   r_   r  s     r/   r   zprune.<locals>.<genexpr>t  s     G(--Gr   r   z2No unreferenced revisions found. Nothing to prune.r-   r   r   z unreferenced revision(s) (z total).r   T)r   r"   r7   zProceed?r   r  z! unreferenced revision(s); freed r   )r  r  )r   r   r
   r   r   rq   r(   r"   updaterM   r   ri   r!   r  rg   rQ   rF   r  rn   r	  r
  r  )r   r   r   ro   r   r#   r"   rP   detachedr  r  r  s               r/   pruner  P  s   0O&y1 EGH%I## H`dnn``!GhGGH 9~EF$I&J
 .}--vj6J6J/KLH *FHH
66677RS[SsSsRtt|} #8,

-1111		
 	KK
$JJ
6..//PQYQqQqPrrst 55..S  O4S]]ODE3NOs   F( (	G1G

G)zhf cache verify gpt2z)hf cache verify gpt2 --revision refs/pr/1z.hf cache verify my-dataset --repo-type datasetrW   rV   rm   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           
         |-|+t        j                  d       t        j                  d      t	        |      }|j                  | t        |d      r|j                  n
t        |      ||||      }	d}
|	j                  r<d	j                  d
 |	j                  D              }t        j                  d|        d}
|	j                  rj|r=d	j                  d |	j                  D              }t        j                  d|        d}
n+t        j                  t        |	j                         d       |	j                  rj|r=d	j                  d |	j                  D              }t        j                  d|        d}
n+t        j                  t        |	j                         d       |	j                   }|
dk7  rKt        j                  d|  d|j                   d| d|	j"                          t        j                  |
      t        j$                  d|	j&                   d|j                   d|  d| |j                  |	j&                  t        |             y)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   )rW   rV   rm   r  r   r  r   r   c           
   3   P   K   | ]  }d |d    d|d    d|d    d|d       yw)	rd   pathz: expected r   z (	algorithmz), got actualNr-   )r   ms     r/   r   zverify.<locals>.<genexpr>  sF      
 1V9+[:r!K.9IQRS[Q\P]^
s   $&u<   ❌ Checksum verification failed for the following file(s):
r   c              3   &   K   | ]	  }d |   ywr   r-   r   ps     r/   r   zverify.<locals>.<genexpr>  s     Iq$qc
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 |   ywr   r-   r%  s     r/   r   zverify.<locals>.<genexpr>  s     Gq$qc
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.)rW   rV   checkedr   )r   errorr   r  r   verify_repo_checksumshasattrr   r)   
mismatchesrj   ri   missing_pathsr  rM   extra_pathsverified_pathrm   r	  checked_count)rW   rV   rm   r   r  r  r  r  apir	  	exit_coder  verified_locations                r/   verifyr4    s7   ` !6		WXjja  
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|}	
 jji((JJ
F(()y6Gr'Rij//$$"#r.   )NFNNN)NFF)QrG   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   _outputr   	cache_clir!   compiler   r   r   r   r   r   _sort_options_dictrg   r\   r)   r%   r@   rC   r,   r   r+   r(   RepoRefsMaprQ   rn   ru   r}   r   r   r   r   r   r   r   r   commandOptionrH   r   Argumentr  r  modelr4  r-   r.   r/   <module>rG     s   O 	  # - !  !  +	 	 	 8 ` `  >?	 $   "**ab6 ?5


LM    * 6C!s*-d|#d|$+.%u#e}%6
 ="43xP $   >#5#<<=
>9S>12Tni8J.KKLTT$[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    	 	 	 	 	G|
d
L	
	|
 V	
	|
 S	Dm	
	|
* d7	
	+|
< d
f	
	=|
H 
I|
|
~   * 	 	 	5OS	|	
	O d
L	
	O 
,	
	
O* ?	
	+O6 
7OOd -/IJK 	 	 	)Fd
L	
	F 
,	
	
F ?	
	F* 
+F LFR    )..  	 	 	 	=fff f d
k	
		f d
R	
	f  %%R	
	!f. ##_	
	/f< =f> 
?ffr.   