Ë
    -Œ:jÿh  ã                   ó  — 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Øœ3˜y›>Ñ)ˆÜˆy‹>œS §¡Ó0Ó0Ø˜!‰OˆJØ#¤s¨9£~Ñ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   € À$Ç.Á.ÐRV×R^ÑR^×RdÑRdÓRfÐAg€ 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ò 
[ˆØ—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ñ	[ñ
[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�   € ð .0€KØLN€OØ×#Ñ#ò MˆØ—=‘=×&Ñ&Ó(ˆØ $ˆ�HÑØŸ™ò 	MˆHØ=AÀ8Ð<LˆO˜H×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ÜÐ[Ó\Ð\Ø�h‰hˆZ�q˜Ÿ™˜Ð!Ð!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   € ÀÇÁÐQU×Q]ÑQ]×QcÑQcÓQeÐ@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   €  u¨Q¡x×'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Ôg€LØò )ˆÜ'¸T¿^¹^×(e°ÐW_×WdÑWdÒ(eÐPSªÐ(e¨Ó(eÓfˆ�dÑÙÜ" 4§>¡>Ñ7RÔSò 1�Ø—‘  hÐ/Õ0ñ1ð �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 '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Ø%-Ð%9ˆH×!Ñ!ØØó*
€ Ø?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¨)¡O°R¸Ó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   ø€ Ø$,Ð$8�8—=’=¸m×>OÑ>OÐPTÔV_ÓVaÓ>bˆDØ—?‘?Ó$ÀÖ(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¸°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)r1   r3   r2   r0   r5   r4   z)Unsupported numeric comparison operator: )r«   )r³   r�   r´   Úcomparisonss       r/   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…   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Ø�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ª   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ÙÜÐ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                  |«       Œ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Ì#Ó>N€HÜ›%€IØ€Gàó 0ˆ
Ø×!Ñ!Ó#ˆÙØØ—,‘,“.ˆä�<‰<Ð*¨GÔ4Ø#×'Ñ'¨Ó0ˆEØˆ}Ø—‘˜zÔ*ØØ"‰NˆD�(Ø�T‰N×Ñ˜xÔ(Ø�M‰M˜(×.Ñ.Ô/Øà"—‘Ô'AÀ&Ó'I×'OÑ'OÓ'QÓRˆØÐØ�N‰N˜:Ô&Øà$×.Ñ.ò 	0ˆHØ�\Ñ"×&Ñ& xÔ0Ø�M‰M˜(×.Ñ.Õ/ò	0ð+0ð2 @H¿~¹~Ó?O×P±°°t�tœY t›_Ñ,ÐP€OÑ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   è ø€ Ò L¡v q¨#¸C¹O¤Ñ Lùs   ‚
�c              3   ó@   K  — | ]  \  }}|€Œ	|j                   –— Œ y ­wrT   ©r—   rÛ   s      r/   rÝ   zls.<locals>.<genexpr>é  s   è ø€ ÒW±&°!°SÀsÁ˜S×-Õ-ÑWùs   ‚
�c              3   óF   K  — | ]  }t        |j                  «      –— Œ y ­wrT   )rM   r"   ©rÜ   rP   s     r/   rÝ   zls.<locals>.<genexpr>ë  s   è ø€ Ò N¸¤ T§^¡^×!4Ñ Nùs   ‚!c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrT   rß   rá   s     r/   rÝ   zls.<locals>.<genexpr>ì  s   è ø€ ÒH°4˜T×.Õ.Ñ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ˆ]ð4ØLSÖTÀDÔ*¨4°Õ?ÐTˆ
ÐTô �)‰)‹+€CØò NˆØ&-ÖM˜U±°E¸!±H¸eÀA¹hÈÕ1L’5ÐMˆÑMðNñ ð	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¡  qšÐ4ˆÑ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 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   è ø€ ÒK¨u˜d 5 'œ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ˆô +¨=¸'Ó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)rM   r6   ©rÜ   rm   s     r/   rÝ   zprune.<locals>.<genexpr>p  s!   è ø€ Ò`¨(ÌÈHÏMÉMÓHZÐ^_ÓH_œXÑ`ùs   ‚' 'c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrT   r_   r  s     r/   rÝ   zprune.<locals>.<genexpr>t  s   è ø€ ÒG°(˜×-Õ-ÑGùrã   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ˆÜÑ`°d·n±nÔ`Ó`ˆÙØØ!ˆ�‰Ø×ÑÑG¸hÔGÕGðHô ˆ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 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   è ø€ ò 
àð �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     r/   rÝ   zverify.<locals>.<genexpr>å  s   è ø€ ÒI¨q $ q c¤
ÑIù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     r/   rÝ   zverify.<locals>.<genexpr>ð  s   è ø€ ÒG¨q $ q c¤
ÑGù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.)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Ü�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.   )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€ð ØØØñÐ ð Ð Ù�*Óò 6€CØ!Ð�sÑØ*-¨¨d |Ð˜#˜˜d�|Ñ$Ø+.¨%¨u¨Ð˜#˜˜e�}Ò%ð6ñ
 �=Ð"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ð:ñó(ð"
" sð 
"¨só 
"ð"Øð"Ø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 ×ÑØòð ó ð 	ð 	ð 	ð 	ð 	ñ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.   