Ë
    ëÿæikg  ã                   ó`  — 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jT                  d«      Z+h d£Z,h d£Z-h d£Z. ejT                  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(j‘                  d9g d:¢¬;«      dd<de&j’                  ddfd=ee4dz   ej”                  d>¬«      f   d?ee@ ej”                  d@¬«      f   dAeeAe4   dz   ej”                  dBdCdD¬«      f   dEedFee6dz   ej”                  dG¬«      f   dHeeKdz   ej”                  dI¬«      f   d&dfdJ„«       ZLe(j‘                  g dK¢¬;«      dd<d<e&j’                  fd7eeAe4    ejš                  dL¬«      f   d=ee4dz   ej”                  d>¬«      f   dMee@ ej”                  dNdOdP¬«      f   dQee@ ej”                  dR¬«      f   dEed&dfdS„«       ZNe(j‘                  dTdUg¬;«      dd<d<e&j’                  fd=ee4dz   ej”                  d>¬«      f   dMee@ ej”                  dNdOdP¬«      f   dQee@ ej”                  dR¬«      f   dEed&df
dV„«       ZOe(j‘                  g dW¢¬;«      e j                   dddd<d<de&j’                  fdXedYe dZe!d=ee4dz   ej”                  d[¬«      f   d\ee4dz   ej”                  d]¬«      f   d^ee@ ej”                  d_d`¬«      f   daee@ ej”                  dbdc¬«      f   dde"dEed&dfde„«       ZQy)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                   ó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© ó    ún/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/huggingface_hub/cli/cache.pyr"   r"   (   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>   Ú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                   ó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/   r0   rD   rD   G   s   … áHàƒOØÓØÔr/   rD   Ú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#   rD   )rJ   rE   Útotal_revisionsÚrevisions_in_full_reposÚrepor#   rF   s          r0   Úsummarize_deletionsrR   T   s„   € ð €JØ€OØÐà+×1Ñ1Ö3‰ˆˆiØœ3˜y›>Ñ)ˆÜˆy‹>œS §¡Ó0Ó0Ø˜!‰OˆJØ#¤s¨9£~Ñ5Ñ#ð	 4ð -Ð/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©rQ   s    r0   Ú<lambda>z0print_cache_selected_revisions.<locals>.<lambda>h   s   € À$Ç.Á.ÐRV×R^ÑR^×RdÑRdÓRfÑAgr/   ©Ú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à   € äÐ'×,Ñ,Ó.Ñ4g×hˆØ—n‘nÐ% Q t§|¡| nÐ5ˆÜÐ+¨DÑ1Ñ7RÔSˆ	Üˆy‹>œS §¡Ó0Ò0Ü�H‰H�t˜H˜: ^Ð4Ô5Øä�‰�4˜�z Ð#Ô$Û!ˆHØ—8‘8œF 8§=¡=Ó1Ó2ÒB°lˆDÜ�H‰H�v˜h×2Ñ2Ð3°2°d°V¸2¸h×>WÑ>WÐ=XÐYÕZñ "ñ i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_idrY   r#   ra   )rp   Úrepo_lookupÚrevision_lookuprQ   rm   rn   s         r0   Úbuild_cache_indexrv   u   ss   € ð .0€KØLN€OØ×#Ô#ˆØ—=‘=×&Ñ&Ó(ˆØ $ˆ�HÑØŸœˆHØ=AÀ8Ð<LˆO˜H×0Ñ0×6Ñ6Ó8Ò9ñ 'ð $ð
 ˜Ð'Ð'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 rU   rV   rZ   s    r0   r[   z'collect_cache_entries.<locals>.<lambda>Œ   s   € ÀÇÁÐQU×Q]ÑQ]×QcÑQcÓQeÑ@fr/   r\   c                 ó   — | j                   S rU   r`   rb   s    r0   r[   z'collect_cache_entries.<locals>.<lambda>�   rd   r/   Nc                 óN   — | d   j                   | d   �| d   j                  fS dfS )Nr   r   Ú )rs   ra   ©Úentrys    r0   r[   z'collect_cache_entries.<locals>.<lambda>–   s2   € Ø�a‘×!Ñ!Ø(-¨a©Ð(<��a‘×$Ñ$ñàBDñr/   c                 ó    — | d   j                   S )Nr   )rs   r}   s    r0   r[   z'collect_cache_entries.<locals>.<lambda>œ   s   €  u¨Q¡x×'8Ò'8r/   )rh   rr   r)   r#   r7   ÚappendÚsort)rp   rw   ÚentriesÚrepo_refs_mapÚsorted_reposrQ   rn   Úrefs           r0   Úcollect_cache_entriesr†   †   så   € ð !#€GØ!#€MÜ˜-×-Ñ-Ñ3fÔg€LÛˆÜ'¸T¿^º^Ô(e¹^°ÐW_×WdÔWdÐPSªÐWd¨¸^Ò(eÓfˆ�dÑÙÜ" 4§>¡>Ñ7R×S�Ø—‘  hÐ/Õ0ñ Tð �N‰N˜D $˜<Õ(ð ñ Ø�‰ñð 	ô 	
ð �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 'r8   c                 óZ   •— t        |�|j                  ‰‰«      S | j                  ‰‰«      S rU   )Ú_compare_numericÚsize_on_disk)rQ   rn   Ú_r‰   Úsize_thresholds      €€r0   r[   z&compile_cache_filter.<locals>.<lambda>´   s3   ø€ Ô)9Ø%-Ð%9ˆH×!Ñ!ØØô*
Ø?C×?PÑ?PØØô*
r/   >   r:   r;   rQ   rn   NÚnowrK   c                 ó€   •— ‰dk(  r| j                   n|�|j                  n| j                  }|€yt        ||z
  ‰‰«      S )Nr:   F)Úlast_accessedÚlast_modifiedr�   )rQ   rn   r“   Ú	timestampr]   r‰   Úsecondss       €€€r0   Ú_time_filterz*compile_cache_filter.<locals>._time_filter½   sW   ø€ ð ˜*Ò$ð ×"Ò"ð Ð'ð ×+Ò+à×'Ñ'ð ð Ð ØÜ# C¨)¡O°R¸ÓAÐAr/   r9   r2   z/Only '=' is supported for 'type' filters. Got 'r‘   c                 ó>   •— | j                   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‰j                  | t        «       «      }‰j                  «       |D �cg c]  }|j                  «       ‘Œ c}v S c c}w rU   )r7   Úgetr)   rY   )rQ   rn   r‘   r7   r…   rƒ   Ú	value_raws        €€r0   Ú_refs_filterz*compile_cache_filter.<locals>._refs_filterÚ   sO   ø€ Ø$,Ð$8�8—=’=¸m×>OÑ>OÐPTÔV_ÓVaÓ>bˆDØ—?‘?Ó$ÁÓ(EÁ¸¨¯©­ÀÑ(EÐEÐEùÒ(Es   ½A)Ú_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ÙÜÐ7¸°v¸RÐ@ÓAÐAà
�+‰+�eÓ
×
"Ñ
"Ó
$€CØ	�‰�TÓ	€BØ—‘˜GÓ$×*Ñ*Ó,€Ià	Ô#Ñ#ÜÐ1°"°°]À4À&ÐHZÔ[_Ô`rÓ[sÐZtÐtuÐvÓwÐwà
”,ÑÜÐ3°C°5¸¸t¸fÐDVÔW[Ô\hÓWiÐVjÐjkÐlÓmÐmà
ˆf‚}Ü# IÓ.ˆô
ð 	
ð Ð&Ñ&Ü  §¡Ó!2Ó3ˆð
	Bœ~ð 
	BÔ9KÈdÑ9Rð 
	BÔY^ð 
	BÔcg÷ 
	Bð Ðà
ˆf‚}Ø—?‘?Ó$ˆà�Š9ÜÐNÈrÈdÐRTÐUÓVÐVð	6œ~ð 	6Ô9KÈdÑ9Rð 	6ÔW\ð 	6Ôaeõ 	6ð Ðð �Š9ÜÐMÈbÈTÐQRÐSÓTÐTð	Fœ~ð 	FÔ9KÈdÑ9Rð 	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)r2   r4   r3   r1   r6   r5   z)Unsupported numeric comparison operator: )r¤   )r¬   r‰   r­   Úcomparisonss       r0   r�   r�   á   sd   € à€|Øð �U‰]Ø�e‰mØ�E‰\Ø�E‰\Ø�e‰mØ�e‰mñ€Kð 
�ÑÜÐDÀRÀDÐ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 )zÿConvert 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                 óŠ  •— | \  }}‰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<   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Ø�8ˆOà�&Š=à-5Ð-A�H×)Ñ)ˆEØ�8ˆOð HL×GXÑGXˆEØ�8ˆOà�*Òð +/×*<Ñ*<Ð*H�D×&Ñ&ˆEØ�8ˆOð ORˆEØ�8ˆOà�*ÒàÐ#Ø2:×2HÑ2HÐ2T˜×.Ñ.�ð �8ˆOð [^�ð �8ˆOð /3×.@Ñ.@Ð.L˜×*Ò*ÐRU�Ø�8ˆOô Ð1°#°Ð7Ó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× 7Ñ 7Ó 9Ó:€EÙÜÐ5°i°[Ð@uÐvÓwÐwà
�+‰+�eÓ
×
"Ñ
"Ó
$€CØ—[‘[ Ó)€Nà
”*ÑÜÐ1°#°°f¸Y¸KÐGYÔZ^Ô_iÓZjÐYkÐklÐmÓnÐnñ -‰NÔ2EÀcÑ2J€EØ�v‰o€Gð9œð 9¬¬c°3¨h©õ 9ð< �gÐÐr/   Ú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%   )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ÚrevsÚfrozen_selecteds                   r0   Ú_resolve_deletion_targetsrÉ   +  s^  € ä#4°]Ó#CÑ €K�ä>IÌ#Ó>N€HÜ›%€IØ€Gãˆ
Ø×!Ñ!Ó#ˆÙØØ—,‘,“.ˆä�<‰<Ð*¨GÔ4Ø#×'Ñ'¨Ó0ˆEØˆ}Ø—‘˜zÔ*ØØ"‰NˆD�(Ø�T‰N×Ñ˜xÔ(Ø�M‰M˜(×.Ñ.Ô/Øà"—‘ wÓ/ˆØÐØ�N‰N˜:Ô&Øà$×.Ô.ˆHØ�\Ñ"×&Ñ& xÔ0Ø�M‰M˜(×.Ñ.Õ/ñ /ð+ ð2 @H¿~¹~Ô?OÔPÑ?O±°°t�tœY t›_Ñ,Ð?O€OÑPÜÜ˜IÓ&Ø Ü�g“ôð ùó Qs   Ä<E5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        | «      }|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)rw   r   r   )r]   rº   z&Limit must be a positive integer, got rŒ   )ÚidrX   rW   rn   Úsnapshot_pathr8   r–   r7   )rÑ   rn   r8   r–   r7   rn   r8   r­   )ÚheadersÚid_keyÚ
alignmentsr|   )rÑ   rX   rW   r8   r•   r–   r7   )rÑ   r8   r•   r–   r7   rÑ   c              3   ó,   K  — | ]  \  }}|€Œ	d–— Œ y ­w)Nr   r.   ©Ú.0r‘   rc   s      r0   Ú	<genexpr>zls.<locals>.<genexpr>Ó  s   è ø€ Ð L±¡v q¨#¸C¹O¤±ùs   ‚
�c              3   ó@   K  — | ]  \  }}|€Œ	|j                   –— Œ y ­wrU   ©r�   r×   s      r0   rÙ   zls.<locals>.<genexpr>Ô  s   è ø€ ÐW¹G±&°!°SÀsÁ˜S×-Õ-¹Gùs   ‚
�c              3   óF   K  — | ]  }t        |j                  «      –— Œ y ­wrU   )rN   r#   ©rØ   rQ   s     r0   rÙ   zls.<locals>.<genexpr>Ö  s   è ø€ Ð NÁ¸¤ T§^¡^×!4Áùs   ‚!c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrU   rÛ   rÝ   s     r0   rÙ   zls.<locals>.<genexpr>×  s   è ø€ ÐH¹<°4˜T×.Õ.¹<ùó   ‚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�   rs   rX   rW   ra   rÒ   rl   Úlast_modified_strrh   r7   r   ÚtableÚlast_accessed_strrž   r)   rN   Úsumrj   r   Úboldr   )rË   r#   rÌ   rÍ   r�   rÎ   rp   ÚexcÚfiltersr‚   rƒ   r‡   Ú
filter_fnsr“   Úfnr~   Úsort_key_fnrº   rQ   rn   rM   r‘   Úunique_reposrE   Úrevision_countÚ
total_sizes                             r0   Úlsrð   W  sk  € ð`OÜ& yÓ1ˆð Šl˜€Gä2°=ÐT]Ô^Ñ€Gˆ]ð4ÙLSÓTÉGÀDÔ*¨4°Õ?ÈGˆ
ÐTô �)‰)‹+€CÛˆÙ&-ÓM¡g˜U±°E¸!±H¸eÀA¹hÈÕ1L’5 gˆÑMð ñ ð	8Ü#5°d·j±jÓ#AÑ ˆK˜Ø�L‰L˜[°'ˆLÔ:ð
 ÐØ�1Š9Ü×$Ñ$Ð'MÈeÈWÐTUÐ%VÓWÐWØ˜&˜5�/ˆáñ #*ô
ñ #*‘��hØÐ#ð —m‘mØŸ<™<Ø!Ÿ^™^Ø$×0Ñ0Ü!$ X×%;Ñ%;Ó!<Ø ×1Ñ1Ø!)×!;Ñ!;Ü˜xŸ}™}Ó-ó	ð #*ð 	ñ 
ô 	�	‰	ØÚGØØ Ð(ö		
ñ" #ô
ñ #‘��að —m‘mØŸ<™<Ø!Ÿ^™^Ø×-Ñ-Ø!%×!7Ñ!7Ò!=¸2Ø!%×!7Ñ!7Ü˜}×0Ñ0°´y³{ÓCÓDóð #ð 	ñ 
ô 	�	‰	ØÚLØØ Ð(õ		
ñ Ù,3Ô4©G¡  qš¨GˆÑ4Ü˜Ó&ˆ
ÙÜ Ñ L±Ó LÓLˆNÜÑW¹GÓWÓW‰Jä Ñ NÁÓ NÓNˆNÜÑH¹<ÓHÓHˆJÜ�‰Ü�I‰IØ˜:˜,Ð&>¸~Ð>Nð OÜ$ ZÓ0Ð1°ð<óõ	
ð øôM ò OÜÐ4°S·]±]°OÐDÓEÈ3Ð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 <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           	      ó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©re   Nr.   )rØ   r~   s     r0   rÙ   zrm.<locals>.<genexpr>  s   è ø€ ÐKÑ8J¨u˜d 5 'œNÑ8Jùó   ‚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  à  sK  € ðLOÜ& yÓ1ˆô +¨=¸'ÓB€Jà×ÒØ—)‘)ÑK¸
×8JÒ8JÓKÓKˆÜ�‰Ð0°°	Ð:Ô;ä
ˆ:×ÑÓ  AÒ%Ü�‰Ð%Ô&Ü�j‰j˜aÔ Ð à-ˆ}×-Ñ-¬v°j×6JÑ6JÓ/KÐL€HÜ  ×!4Ñ!4Ó5€Fà!€MØ×ÒØ×Ñ × 1Ñ 1Ð2°(Ð;Ô<Ø×$Ò$Ø×Ñ × =Ñ =Ð>¸lÐKÔLÙØ×Ñ × ;Ñ ;Ð<¸LÐIÔJà—<‘< Ó.€LÜ‡H�HÐ ˜~¨[¸×9YÑ9YÐ8ZÐZ[Ð\Ô]Ü" :×#6Ñ#6Ô7áÜ�
‰
Ø-ØØ×#Ñ#Ø×1Ñ1Ø×1Ñ1õ	
ð 	ä‡K�KÐ(¨cÕ2à×ÑÔÜ  ×!4Ñ!4Ó5€FÜ‡J�JØ
�6×$Ñ$Ð% ]°6×3NÑ3NÐ2Oð PØ×2Ñ2Ð3°1ð	6à×'Ñ'Ø ×5Ñ5Ø×.Ñ.öøôU ò OÜÐ4°S·]±]°OÐDÓEÈ3Ð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)rN   r7   ©rØ   rn   s     r0   rÙ   zprune.<locals>.<genexpr>\  s"   è ø€ Ð`±n¨(ÌÈHÏMÉMÓHZÐ^_ÓH_œX±nùs   ‚' 'c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrU   r`   r  s     r0   rÙ   zprune.<locals>.<genexpr>`  s   è ø€ ÐG¹h°(˜×-Õ-¹hùrß   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  ;  s¶  € ð2OÜ& yÓ1ˆð EG€HÜ›%€IØ×#Ô#ˆÜÑ`°d·n²nÓ`Ó`ˆÙØØ!ˆ�‰Ø×ÑÑG¹hÓGÕGð $ô ˆ9ƒ~˜ÒÜ�‰ÐEÔFØä$Ü˜IÓ&ØØô€Jð
 .ˆ}×-Ñ-¬v°j×6JÑ6JÓ/KÐL€HÜ  Ó*€Fä‡H�HØ
˜6×6Ñ6Ð7Ð7RÐS[×SsÑSsÐRtÐt|Ð}ôô # 8Ô,áÜ�
‰
Ø-ØØ×1Ñ1Ø×1Ñ1õ		
ð 	ä‡K�K�
 Õ$à×ÑÔÜ‡J�JØ
�6×.Ñ.Ð/Ð/PÐQY×QqÑQqÐPrÐrsÐtØ ×5Ñ5Ø×.Ñ.öøôS ò OÜÐ4°S·]±]°OÐDÓEÈ3Ð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 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	           
      ó¸  — |�-|�+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Š   )rX   rW   rn   r  rË   r  r   rô   c           
   3   óP   K  — | ]  }d |d   › d|d   › d|d   › d|d   › �–— Œ  y­w)	re   Úpathz: expected r›   z (Ú	algorithmz), got ÚactualNr.   )rØ   Úms     r0   rÙ   zverify.<locals>.<genexpr>É  sF   è ø€ ð 
á&�ð �1�V‘9�+˜[¨¨:©¨°r¸!¸K¹.Ð9IÈÐQRÐS[ÑQ\ÐP]Ô^Ù&ùs   ‚$&u<   â�Œ Checksum verification failed for the following file(s):
r   c              3   ó&   K  — | ]	  }d |› �–— Œ y­wrö   r.   ©rØ   Úps     r0   rÙ   zverify.<locals>.<genexpr>Ò  s   è ø€ ÐIÑ4H¨q $ q c¤
Ñ4Hùr÷   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     r0   rÙ   zverify.<locals>.<genexpr>Ý  s   è ø€ ÐGÑ4F¨q $ q c¤
Ñ4Fùr÷   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   Úverifyr0  †  s7  € ðb Ð Ð!6Ü�	‰	ÐWÔXÜ�j‰j˜aÔ Ð ä
˜5Ô
!€Cà×&Ñ&ØÜ%,¨Y¸Ô%@�)—/’/ÄcÈ)ÃnØØØØð 'ó €Fð €Ià×ÒØ—)‘)ñ 
à×&Ò&ó
ó 
ˆô 	�‰ÐPÐQXÐPYÐZÔ[Øˆ	à×ÒÙ Ø—i‘iÑI°F×4HÒ4HÓIÓIˆGÜ�H‰HÐNÈwÈiÐXÔYØ‰Iä�K‰KÜ�v×+Ñ+Ó,Ð-ð .;ð ;ôð
 ×ÒÙØ—i‘iÑG°F×4FÒ4FÓGÓGˆGÜ�H‰HÐLÈWÈIÐVÔWØ‰Iä�K‰KÜ�v×)Ñ)Ó*Ð+ð ,9ð 9ôð
 ×,Ñ,Ðà�A‚~Ü�	‰	Ø'¨ y°°I·O±OÐ3DÀEÐJ[ÐI\Ð\kÐlr×l{Ñl{Ðk|Ð}ô	
ô �j‰j˜iÔ(Ð(ä‡J�JØ
�F×(Ñ(Ð)¨°y·±Ð6GÀrÈ'ÈÐRiÐ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  Úmodelr0  r.   r/   r0   Ú<module>rD     sQ  ðñ Oã 	Û Ý #ß -Ý !Ý ß !ã å +ç v× vÑ vß 7ß s× sÑ sß .ñ Ð>Ô?€	ñ �$Ô÷ð ó ðð �"—*‘*ÐaÓb€Ú6Ð Ú?€Ú5€
Ø�—
‘
ÐLÓM€ð ØØØñÐ ð Ð Ù�*Ö€CØ!Ð�sÑØ*-¨¨d |Ð˜#˜˜d�|Ñ$Ø+.¨%¨u¨Ð˜#˜˜e�}Ò%ð ñ
 �=Ð"4¸3ÀxÔP€ñ �$Ô÷ð ó ðð �>Ð#5¸Ñ#<Ð<Ñ=€
Ø�> 9¨S¡>Ð1Ñ2€ðTØ˜n¨iÐ8JÑ.KÐKÑLðTàóTð$[°W¸^ÈYÐWiÑMjÐ=jÑ5kð [Ðptó [ð(Øð(à
ØˆˆnÐ	ÑØˆˆe�NÐ$6Ð6Ñ7Ð	7Ñ8ð:ñó(ð""Øð"Ø6:ð"à
ˆ4�
Ñ˜[Ð(Ñ)ó"ð4>Ø
ð>Ø)ð>àˆ~Ð1°DÑ8¸%Ð@À$ÐFÑGó>ðB˜5 4™<ð ¨Sð ¸ð À4ó ð(3 #ð 3¨%°¸*¸ÀuÈSÐRUÈXÁÐ9VÑ0WÐY]Ð0]Ñ*^ó 3ðl&¨[ð &À4ÈÁ9ð &ÐQdó &ðX ×ÑØòð ó ð 	ð 	ð 	Ø 4× 9Ñ 9ð 	ð 	ñI}
ØØˆd‰
Øˆ�‰ØLô	
ð	ñð}
ð ØØˆ�‰ØVô	
ð	ñð}
ð ØˆS‰	�DÑØˆ�‰ØØØmô	
ð	ñð}
ð* ð+}
ð, Ø�dÑØˆ�‰ð7ô	
ð	ñð-}
ð> Øˆd‰
Øˆ�‰Øfô	
ð	ñð?}
ðJ 
òK}
óð}
ð@ ×Ñòð ó ð( 	ð 	ð 	Ø 4× 9Ñ 9ñ7PØØˆS‰	Øˆ�‰Ødô	
ð	ñðPð Øˆd‰
Øˆ�‰ØLô	
ð	ñðPð 
ØØˆ�‰ØØØ,ô	
ð	ñ
ðPð* ØØˆ�‰Ø?ô	
ð	ñð+Pð6 ð7Pð8 
ò9PóðPðf ×ÑÐ-Ð/IÐJÐÓKð 	ð 	ð 	Ø 4× 9Ñ 9ñ+GØØˆd‰
Øˆ�‰ØLô	
ð	ñðGð 
ØØˆ�‰ØØØ,ô	
ð	ñ
ðGð ØØˆ�‰Ø?ô	
ð	ñðGð* ð+Gð, 
ò-Gó LðGðT ×Ñòð ó ð )×.Ñ.Ø ð 	ð 	ð 	ð 	ØØ 4× 9Ñ 9ñ?gØðgàðgð ðgð Øˆd‰
Øˆ�‰Økô	
ð	ñð	gð Øˆd‰
Øˆ�‰ØRô	
ð	ñðgð  %ØØˆ�‰Ø%ØRô	
ð	ñð!gð. #ØØˆ�‰Ø#Ø_ô	
ð	ñð/gð< ð=gð> ð?gð@ 
òAgóñgr/   