
    qiXm                        d 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 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)m*Z*  e*d      Z+ ed       G d d             Z, ejZ                  d      Z.h dZ/h dZ0h dZ1 ejZ                  d      Z2dddddZ3i Z4 e5e1      D ]  Z6e6e4e6<   e6 de4e6 d<   e6 de4e6 d<     e
de4e7e8       Z9 ed       G d! d"             Z:eeee   f   Z;eee<e7   f   Z=d#eee<e   f   d$e:fd%Z>d#eee<e   f   d$dfd&Z?d'ed$eee7ef   ee7eeef   f   f   fd(Z@d'ed)eAd$eee;   e=f   fd*ZBd+e7d,e=d$eeee   eCgeAf   fd-ZDd.ee;   d)eAd,e=d$eee7ef      fd/ZEd.ee;   d)eAd,e=d$dfd0ZFd.ee;   d)eAd,e=d$dfd1ZGd2eeC   d3e7d4eCd$eAfd5ZHd6e7d$eIee;geIed7f   f   eAf   fd8ZJd'ed9eKe7   d$e,fd:ZLe+j                  g d;<      dd=de$j                  d=ddfd>eee7    ej                  d?      f   d@eeA ej                  dA      f   dBeeeKe7       ej                  dCdDdE      f   dFee$ ej                  dG      f   dHeeA ej                  dIdJdK      f   dLeee9    ej                  dM      f   dNeeeP    ej                  dO      f   d$dfdP       ZQe+j                  g dQ<      	 	 	 dld9eeKe7    ej                  dR      f   d>eee7    ej                  d?      f   dSeeA ej                  dTdUdV      f   dWeeA ej                  dX      f   d$df
dY       ZSe+j                  dZd[g<      	 	 	 dld>eee7    ej                  d?      f   dSeeA ej                  dTdUdV      f   dWeeA ej                  dX      f   d$dfd\       ZTe+j                  g d]<      e&j                  dddd=d=dfd^e%d_e&d`e'd>eee7    ej                  da      f   dbeee7    ej                  dc      f   ddeeA ej                  dedf      f   dgeeA ej                  dhdi      f   dje(d$dfdk       ZVy)mzHContains the 'hf cache' command group with cache management subcommands.    N)defaultdict)	dataclass)Enum)	AnnotatedAnyCallableDictListMappingOptionalTuple)CLIError   )ANSICachedRepoInfoCachedRevisionInfoCacheNotFoundHFCacheInfo_format_sizescan_cache_dirtabulate)parse_duration
parse_size   )OutputFormat	RepoIdArgRepoTypeOptRevisionOptTokenOpt
get_hf_apityper_factoryzManage local cache directory.)helpT)frozenc                   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     K/opt/pipecat/venv/lib/python3.12/site-packages/huggingface_hub/cli/cache.pyr%   r%   :   s0    ~>9-?#@@AA38_r2   r%   zA^(?P<key>[a-zA-Z_]+)\s*(?P<op>==|!=|>=|<=|>|<|=)\s*(?P<value>.+)$>   <=>!=<=>=>   refssizetypeaccessedmodified>   namer;   r=   r>   z.^(?P<key>[a-zA-Z_]+)(?::(?P<order>asc|desc))?$descasc)r=   r>   r;   r?   z:asc_ascz:desc_descSortOptions)r<   modulec                   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.   r1   r2   r3   rG   rG   Y   s    HOr2   rG   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&   rG   )rM   rH   total_revisionsrevisions_in_full_reposrepor&   rI   s          r3   summarize_deletionsrU   f   s     JO+113 6i3y>)y>S00!OJ#s9~5#	6 -/FFz+A?SSr2   c           
         t        | j                         d       D ]  }|j                   d|j                   }t        | |   d       }t	        |      t	        |j
                        k(  rt        d| d       `t        d| d       |D ]R  }dj                  t        |j                              xs d	}t        d
|j                   d| d|j                          T  y)zBPretty-print selected cache revisions during confirmation prompts.c                 N    | j                   | j                  j                         fS N	repo_typerepo_idlowerrT   s    r3   <lambda>z0print_cache_selected_revisions.<locals>.<lambda>z   s    $..RVR^R^RdRdRfAg r2   key/c                     | j                   S rX   commit_hashrevs    r3   r^   z0print_cache_selected_revisions.<locals>.<lambda>|   
    3?? r2     - z (entire repo): z
(detached)z      z [z] N)sortedkeysrZ   r[   rQ   r&   printjoinr:   rd   size_on_disk_str)rM   rT   repo_keyr&   revisionr:   s         r3   print_cache_selected_revisionsrr   x   s    ',,.4gh 
Xnn%Qt||n5+D17RS	y>S00D
.12XJa !! 	XH88F8==12BlDF8//04&8;T;T:UVW	X
Xr2   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_idr\   r&   rd   )rs   repo_lookuprevision_lookuprT   rp   rq   s         r3   build_cache_indexry      s     .0KLNO## M==&&( $H 	MH=A8<LOH006689	MM
 ''r2   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 rX   rY   r]   s    r3   r^   z'collect_cache_entries.<locals>.<lambda>   s    QUQ]Q]QcQcQe@f r2   r_   c                     | j                   S rX   rc   re   s    r3   r^   z'collect_cache_entries.<locals>.<lambda>   rg   r2   Nc                 N    | d   j                   | d   | d   j                  fS dfS )Nr   r    )rv   rd   entrys    r3   r^   z'collect_cache_entries.<locals>.<lambda>   s6    a!!(-a(<a$$ BD r2   c                      | d   j                   S )Nr   )rv   r   s    r3   r^   z'collect_cache_entries.<locals>.<lambda>   s    uQx'8'8 r2   )rk   ru   r,   r&   r:   appendsort)rs   rz   entriesrepo_refs_mapsorted_reposrT   rq   refs           r3   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           
        	
 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 rBt        j                               	dt        dt        t           dt        dt        f	fd}|S dk(  rKj                         dk7  rt        d d      dt        dt        t           dt        dt        ffd}|S dk7  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'.r`   opvaluezUnsupported operator 'z' in filter ''. Must be one of .zUnsupported filter key '' in 'r;   c                 Z    t        ||j                        S | j                        S rX   )_compare_numericsize_on_disk)rT   rq   _r   size_thresholds      r3   r^   z&compile_cache_filter.<locals>.<lambda>   s7    )9%-%9H!!*
 ?C?P?P*
 r2   >   r=   r>   rT   rq   nowrN   c                     dk(  r| j                   n||j                  n| j                  }|yt        ||z
        S )Nr=   F)last_accessedlast_modifiedr   )rT   rq   r   	timestampr`   r   secondss       r3   _time_filterz*compile_cache_filter.<locals>._time_filter   sW     *$ "" ' ++''   #C)ORAAr2   r<   r5   z/Only '=' is supported for 'type' filters. Got 'r   c                 >    | j                   j                         k(  S rX   )rZ   r\   )rT   rq   r   expecteds      r3   _type_filterz*compile_cache_filter.<locals>._type_filter   s    >>'')X55r2   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 rX   )r:   getr,   r\   )rT   rq   r   r:   r   r   	value_raws        r3   _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groupr\   _ALLOWED_OPERATORSlist_FILTER_KEYSr   r   r   r   r   floatbool)r   r   r   r   r   r   r   r`   r   r   r   r   s    `    @@@@@@r3   compile_cache_filterr      s    !!$**,/E7vR@AA
++e

"
"
$C	T	BG$**,I	##1"]4&HZ[_`r[sZttuvww
,3C5tfDVW[\hWiVjjklmm
f}#I.
 	
 && !23
	B~ 
	BBT9U 
	B\a 
	Bfj 
	B 
f}??$9NrdRTUVV	6~ 	6BT9U 	6Z_ 	6dh 	6  9MbTQRSTT	F~ 	FBT9U 	FZ_ 	Fdh 	F r2   r   c                   g }| D ]  \  }}|rq||j                   |j                  |j                  t        |j                        |j
                  |j                  |j                  t        |j                        d}n\|j                   |j                  |j
                  |j                  |j                  t        |j                  |t                           d}|j                  |        |S )zGNormalize cache entries into serializable records for JSON/CSV exports.)r[   rZ   rq   snapshot_pathr   r   r   r:   )r[   rZ   r   r   r   r:   )r[   rZ   rd   r-   r   r   r   r   rk   r:   r   r,   r   )r   rz   r   payloadrT   rq   records          r3   _build_cache_export_payloadr      s     %'G! h<<!^^$00!$X%;%;!< ( 5 5!%!3!3!)!7!7x}}-	&F  <<!^^ $ 1 1!%!3!3!%!3!3}00y{CDF 	v/0 Nr2   c                   | s|rdnd}t        |       y|ryg d}| D cg c]g  \  }}|`|j                  |j                  |j                  j	                  d      |j
                  dj                  t        |j                              gi }}}ng d}| D cg c]w  \  }}|j                  |j                  j	                  d      |j                  xs d|j
                  dj                  t        |j                  |t                                 gy }}}t        t        ||	             | D ch c]  \  }}|	 }	}}t        |	      }
|r%t        d
 | D              }t        d | D              }n$t        d |	D              }t        d |	D              }d|
 d| dt        |       d}t        t!        j"                  |             yc c}}w c c}}w c c}}w )zBRender cache entries as a table and show a human-readable summary.zNo cached revisions found.zNo cached repositories found.N)IDREVISIONSIZELAST_MODIFIEDREFS   rj   )r   r   LAST_ACCESSEDr   r   r   )headersc              3   ,   K   | ]  \  }}|	d  y w)Nr   r1   .0r   rq   s      r3   	<genexpr>z,print_cache_entries_table.<locals>.<genexpr>;  s     R;1hX=QQRs   
c              3   @   K   | ]  \  }}|	|j                     y wrX   r   r   s      r3   r   z,print_cache_entries_table.<locals>.<genexpr><  s     b;1hXMa..bs   
c              3   F   K   | ]  }t        |j                          y wrX   )rQ   r&   r   rT   s     r3   r   z,print_cache_entries_table.<locals>.<genexpr>>  s     JTS0Js   !c              3   4   K   | ]  }|j                     y wrX   r   r   s     r3   r   z,print_cache_entries_table.<locals>.<genexpr>?  s     Dt**D   z
Found z repo(s) for a total of z revision(s) and z	 on disk.)rm   rv   rd   ro   rjustlast_modified_strrn   rk   r:   last_accessed_strr   r,   r   rQ   sumr   r   bold)r   rz   r   messager   rT   rq   
table_rowsr   unique_reposrH   revision_count
total_sizesummarys                 r3   print_cache_entries_tabler     s    2C.IhgE #*

 h# $$))//2**./


 

 K #	
 a %%++A.&&,"&& 1 1$	 DEF	

 	
 
(:w
/0(/0WT1D0L0\"JR'RRb'bb
J\JJD|DD
$<^<LL]^jku^v]w  xA  BG	$))G
I

	
 1s   A,GA<G3Gc                    t        | ||      }t        j                  |t        j                  d       t        j                  j                  d       y)z7Dump cache entries as JSON for scripting or automation.rz   r   r   )indent
N)r   jsondumpsysstdoutwrite)r   rz   r   r   s       r3   print_cache_entries_jsonr   E  s:     *'EVfstGIIgszz!,JJTr2   leftr   rightc                 l    | y| |k(  | |k7  | |kD  | |k  | |k\  | |k  d}||vrt        d|       ||   S )z)Evaluate numeric comparisons for filters.F)r5   r7   r6   r4   r9   r8   z)Unsupported numeric comparison operator: )r   )r   r   r   comparisonss       r3   r   r   N  sd    | U]emE\E\ememK 
DRDIJJr?r2   	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   rN   .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?   r;   r=   g        r>   zUnsupported sort key: )rv   r\   r   r   r   r   )r   rT   rq   r   r`   s       r3   	_sort_keyz%compile_cache_sort.<locals>._sort_keyw  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8r2   )_SORT_PATTERNr   r   r\   r   r   
_SORT_KEYSr   _SORT_DEFAULT_ORDER
CacheEntryr0   r   )r   r   explicit_orderr   reverser   r`   s         @r3   compile_cache_sortr   b  s     	 1 7 7 9:E5i[@uvww
++e

"
"
$C[[)N
*1#fYKGYZ^_iZjYkklmnn -N2Ec2JEvoG9 9c3h 9< gr2   targetsc                    t        |       \  }}t        t              }t               }g }|D ]  }|j                         }|s|j	                         }	t        j                  d|	      rZ|j                  |	      }
|
|j                  |       a|
\  }}||   j                  |       |j                  |j                         |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(   )ry   r   setr   r\   re	fullmatchr   r   addrd   r&   rP   r,   r%   r0   )rs   r   rw   rx   r'   r&   r(   
raw_targettargetloweredr   rT   rq   matched_reporevsfrozen_selecteds                   r3   _resolve_deletion_targetsr     se   #4]#C K>I#>NH%IG 0
!!#,,.<<*G4#''0E}z*"ND(TNx(MM(../"w/NN:&$.. 	0H\"&&x0MM(../	0+02 @H~~?OPttYt_,POPI& g  Qs   <E5)zhf cache lszhf cache ls --revisionsz*hf cache ls --filter "size>1GB" --limit 20zhf cache ls --format json)examplesF	cache_dirz9Cache directory to scan (defaults to Hugging Face cache).r&   zCInclude revisions in the output instead of aggregated repositories.filterz-fz--filterzZFilter entries (e.g. 'size>1GB', 'type=model', 'accessed>7d'). Can be used multiple times.formatzOutput format.quietz-qz--quietz-Print only IDs (repo IDs or revision hashes).r   a  Sort entries by key. Supported keys: 'accessed', 'modified', 'name', 'size'. Append ':asc' or ':desc' to explicitly set the order (e.g., 'modified:asc'). Defaults: 'accessed', 'modified', 'size' default to 'desc' (newest/biggest first); 'name' defaults to 'asc' (alphabetical).limitzSLimit the number of results returned. Returns only the top N entries after sorting.c           	         	 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 ](  \  }}t        ||j                  n|j                          * yt"        j$                  t&        t"        j(                  t*        i} ||   |
||	      S # 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)
z&List cached repositories or revisions.Cache directory not found: N)rz   r   r   )r`   r   z&Limit must be a positive integer, got r   r   )r   r   r   r   r   r   r   typerBadParameterr-   timer   r   r   rm   rd   rv   r   tabler   r   r   )r   r&   r   r   r   r   r   rs   excfiltersr   r   r   
filter_fnsr   fnr   sort_key_fnr   rT   rq   
formatterss                         r3   lsr    s   x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/% 	SND((*>(&&DMMR	S 	53J :fgR_``M  O4S]]ODE3NO U 4  S*34
 N  	8$$SX.C7	8sb   D3 E" EE" F0F;+F 3	E<EEE" "	F+F

F	G F??G)zhf cache rm model/gpt2zhf cache rm <revision_hash>z hf cache rm model/gpt2 --dry-runzhf cache rm model/gpt2 --yeszQOne or more repo IDs (e.g. model/bert-base-uncased) or revision hashes to delete.yesz-yz--yeszSkip confirmation prompt.dry_runz,Preview deletions without removing anything.c           	      Z   	 t        |      }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!                  |	j                   d       |	j"                  r|
j!                  |	j"                   d	       |
s|
j!                  |	j$                   d	       d
j'                  |
      }t        d| d|j(                   d       t+        |j                         |rt        d       y|s#t        j,                  dd      st        d       y|j/                          t        |j                        }	t        d|	j                   d|	j$                   d|j(                   d       y# t        $ r}t        d|j                         |d}~ww xY w)z(Remove cached repositories or revisions.r  Nz2Could not find the following targets in the cache:rh   r   zNothing to delete.codez repo(s)z revision(s)z and About to delete z totalling r   Dry run: no files were deleted.zProceed with deletion?F)defaultzDeletion cancelled.Deleted z repo(s) and z revision(s); freed )r   r   r   r   r   r(   rm   rQ   r&   r  Exitdelete_revisionsrk   rU   r'   rH   r   rI   rJ   rn   expected_freed_size_strrr   confirmexecute)r   r   r  r  rs   r  
resolutionr   strategycountssummary_partssummary_texts               r3   rmr!  +  s   JO&y1 +='BJBC'' 	"ED.!	" : A%"#jja  -}--vj6J6J/KLH !4!45F!M 1 12(;<$$ = =>lKL ; ;<LIJ<<.L	\N+h6V6V5WWX
YZ":#6#67/0u}}%=uM#$ !4!45F	
6$$%]63N3N2OOcdl  eE  eE  dF  FG  	HO  O4S]]ODE3NOs   H 	H*H%%H*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        d       yt        t        |      |d      }	 |j                  t        |	j                         }
t        |      }t        d	|j                   d
|
j                    d       t#        |       |rt        d       y|s!t%        j&                  d      st        d       y|
j)                          t        d|j                   d|
j                    d       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)rQ   r:   r   rq   s     r3   r   zprune.<locals>.<genexpr>  s!     `(HMMHZ^_H_X`s   ''c              3   4   K   | ]  }|j                     y wrX   rc   r$  s     r3   r   zprune.<locals>.<genexpr>  s     G(--Gr   r   z2No unreferenced revisions found. Nothing to prune.r1   r   r  z unreferenced revision(s) (z total).r  zProceed?zPruning cancelled.r  z! unreferenced revision(s); freed r   )r   r   r   r   r   ru   r,   r&   updaterQ   rm   r%   r  rk   rU   rJ   r  rr   r  r  r  )r   r  r  rs   r  r'   r&   rT   detachedr  r  r  s               r3   pruner(  ~  s   0O&y1 EGH%I## H`dnn``!GhGGH 9~BC$I&J
 .}--vj6J6J/KLH *F	
66677RS[SsSsRtt|} #8,/0u}}Z0"#	HV0011RS[SsSsRttu
vwM  O4S]]ODE3NOs   E 	F&E??F)zhf cache verify gpt2z)hf cache verify gpt2 --revision refs/pr/1z.hf cache verify my-dataset --repo-type datasetr[   rZ   rq   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                 6   |#|!t        d       t        j                  d      t        |      }|j	                  | t        |d      r|j                  n
t        |      ||||      }	d}
t        |	j                        }|rAt        d	       |	j                  D ]%  }t        d
|d    d|d    d|d    d|d           ' d}
|	j                  rU|r-t        d       |	j                  D ]  }t        d
|         d}
n&t        |	j                         d}t        d|        |	j                  rU|r-t        d       |	j                  D ]  }t        d
|         d}
n&t        |	j                         d}t        d|        |	j                  }|
dk7  rMt        d|  d|j                   d| d       t        d|	j                          t        j                  |
      t        d|	j                   d|  d|j                   d|        t        d       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   )r[   rZ   rq   r)  r   r,  r   u;   ❌ Checksum verification failed for the following file(s):rh   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.)rm   r  r  r    verify_repo_checksumshasattrr   r-   r   
mismatchesmissing_pathsrQ   extra_pathsverified_pathrq   checked_count)r[   rZ   rq   r   r)  r*  r+  r,  apiresult	exit_codehas_mismatchesmpwarningverified_locations                   r3   verifyr@    sV   ` !6STjja  
5
!C&&%,Y%@)//c)n ' F I&++,NKL"" 	fAD6;q}oR+?OwWXYaWbVcde	f	 EF)) "QCj!"I v++,- .; ;  HWI&'CD'' "QCj!"I v))*+ ,9 9  HWI&',,A~-gYc)//9J%PaObbcdeV__-./jji((	M&../~gYc)//IZZ_`q_r
st	
"#r2   )NFF)WrK   r   r   r   r  collectionsr   dataclassesr   enumr   typingr   r   r   r	   r
   r   r   r   r  huggingface_hub.errorsr   utilsr   r   r   r   r   r   r   r   utils._parsingr   r   
_cli_utilsr   r   r   r   r   r    r!   	cache_clir%   compiler   r   r   r   r   r   _sort_options_dictrk   r`   r-   r)   rD   rG   r   r,   RepoRefsMaprU   rr   ry   r   r   r   r   r   r   r   r   r0   r   r   r   commandr  OptionrL   r  Argumentr!  r(  modelr@  r1   r2   r3   <module>rQ     s   O  	 
  # !  Q Q Q  +	 	 	 8   >?	 $   "**ab6 ?5


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