§
    ìXÊjÍ~  ã                   óì  — 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	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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*m+Z+ ddl,m-Z-  e(d¬¦  «        Z. e	d¬¦  «         G d„ d¦  «        ¦   «         Z/ ej0        d¦  «        Z1h d£Z2h d£Z3h d£Z4 ej0        d¦  «        Z5dddddœZ6i Z7 e8e4¦  «        D ]Z9e9e7e9<   e9› d�e7e9› d�<   e9› d �e7e9› d!�<   Œ ed"e7e:e;¬#¦  «        Z< e	d¬¦  «         G d$„ d%¦  «        ¦   «         Z=e>eedz  f         Z?e@eeAe:         f         ZBd&eeeAe         f         d'e=fd(„ZCd)eDd*eDd+eDd'e:fd,„ZEd&eeeAe         f         d'dfd-„ZFd.ed'e>e@e:ef         e@e:e>eef         f         f         fd/„ZGd0e:d'efd1„ZHd2ed'e:fd3„ZId.ed4eJd'e>eKe?         eBf         fd5„ZLd6e:d7eBd'eeedz  eMgeJf         fd8„ZNd9eMdz  d:e:d;eMd'eJfd<„ZOd=e:d'e>ee?ge>ed>f         f         eJf         fd?„ZPd.ed@eKe:         d'e/fdA„ZQd.edBe@e:ef         d'e/fdC„ZRe. S                    dDg dE¢¬F¦  «        	 	 	 	 	 	 drdHee:dz   e+dI¬¦  «        f         dJeeJ e+dK¬¦  «        f         dLeeKe:         dz   e+dMdNdO¬¦  «        f         dPee<dz   e+dQ¬¦  «        f         dReeDdz   e+dS¬¦  «        f         dTeeJ e+dU¬¦  «        f         d'dfdV„¦   «         ZTe. S                    g dW¢¬F¦  «        	 	 	 dsd@eeKe:          e*dX¬¦  «        f         dHee:dz   e+dI¬¦  «        f         dYeeJ e+dZd[d\¬¦  «        f         d]eeJ e+d^¬¦  «        f         d'df
d_„¦   «         ZUe. S                    d`dag¬F¦  «        	 	 	 dsdHee:dz   e+dI¬¦  «        f         dYeeJ e+dZd[d\¬¦  «        f         d]eeJ e+d^¬¦  «        f         d'dfdb„¦   «         ZVe. S                    g dc¢¬F¦  «        e$jW        ddddGdGdfdde#dee$dfe%dHee:dz   e+dg¬¦  «        f         dhee:dz   e+di¬¦  «        f         djeeJ e+dkdl¬¦  «        f         dmeeJ e+dndo¬¦  «        f         dpe&d'dfdq„¦   «         ZXdS )tzHContains the 'hf cache' command group with cache management subcommands.é    N)Údefaultdict)ÚCallableÚMapping)Ú	dataclassÚfield)ÚEnum)Ú	AnnotatedÚAny)ÚCLIErroré   )ÚANSIÚCachedFileInfoÚCachedRepoInfoÚCachedRevisionInfoÚCacheNotFoundÚHFCacheInfoÚHfUriÚ_format_sizeÚ_shared_blobsÚparse_hf_uriÚscan_cache_dir)Úparse_durationÚ
parse_sizeé   )Ú	RepoIdArgÚRepoTypeOptÚRevisionOptÚTokenOptÚ
get_hf_apiÚtyper_factory)ÚArgumentÚOption)ÚoutzManage local cache directory.)ÚhelpT)Úfrozenc                   ó˜   — e Zd ZU ee         ed<   eeee         f         ed<   e	edf         ed<    e
e¬¦  «        Zeeef         ed<   dS )Ú_DeletionResolutionÚ	revisionsÚselected.Úmissing)Údefault_factoryÚfilesN)Ú__name__Ú
__module__Ú__qualname__Ú	frozensetÚstrÚ__annotations__Údictr   r   Útupler   r,   r   © ó    úJC:\Projects\Historical\venv\Lib\site-packages\huggingface_hub/cli/cache.pyr'   r'   5   sy   € € € € € € à˜Œ~ÐÐÑØ�> 9Ð-?Ô#@Ð@ÔAÐAÐAÑAØ�3˜�8Œ_ÐÐÑØ', u¸TÐ'BÑ'BÔ'B€Eˆ4� Ð#Ô$ÐBÐBÑBÐBÐBr6   r'   z?(?P<key>[a-zA-Z_]+)\s*(?P<op>==|!=|>=|<=|>|<|=)\s*(?P<value>.+)>   ú<ú=ú>ú!=ú<=ú>=>   ÚrefsÚsizeÚtypeÚaccessedÚmodified>   Únamer?   rA   rB   z,(?P<key>[a-zA-Z_]+)(?::(?P<order>asc|desc))?ÚdescÚasc)rA   rB   r?   rC   z:ascÚ_ascz:descÚ_descÚSortOptions)r@   Úmodulec                   ó2   — e Zd ZU dZeed<   eed<   eed<   dS )ÚCacheDeletionCountsz>Simple counters summarizing cache deletions for CLI messaging.Ú
repo_countÚpartial_revision_countÚtotal_revision_countN)r-   r.   r/   Ú__doc__Úintr2   r5   r6   r7   rK   rK   U   s9   € € € € € € àHÐHà€O€O�OØÐÐÑØÐÐÑÐÐr6   rK   Úselected_by_repoÚreturnc                 ó
  — d}d}d}|                       ¦   «         D ]S\  }}|t          |¦  «        z  }t          |¦  «        t          |j        ¦  «        k    r|dz  }|t          |¦  «        z  }ŒT||z
  }t          |||¦  «        S )z(Summarize deletions across repositories.r   r   )ÚitemsÚlenr(   rK   )rQ   rL   Útotal_revisionsÚrevisions_in_full_reposÚrepor(   rM   s          r7   Úsummarize_deletionsrY   b   s˜   € ð €JØ€OØÐà+×1Ò1Ñ3Ô3ð 6ð 6‰ˆˆiØ�3˜y™>œ>Ñ)ˆÝˆy‰>Œ>�S ¤Ñ0Ô0Ò0Ð0Ø˜!‰OˆJØ#¥s¨9¡~¤~Ñ5Ð#øà,Ð/FÑFÐÝ˜zÐ+AÀ?ÑSÔSÐSr6   Úrevision_countÚincomplete_countÚshared_blob_countc                 óD  — g }| r|                      | › d�¦  «         |r|                      |› d�¦  «         |r|                      |› d�¦  «         t          |¦  «        dk    r)d                     |dd…         ¦  «        dz   |d         z   S d	                     |¦  «        S )
zMBuild the human-readable summary of what `hf cache prune` is about to delete.z unreferenced revision(s)z incomplete download(s)z unreferenced shared blob(s)r   z, Néÿÿÿÿú and Ú )ÚappendrU   Újoin)rZ   r[   r\   Úpartss       r7   Ú_prune_summaryrd   t   s¼   € à€EØð CØ�Š˜ÐAÐAÐAÑBÔBÐBØð CØ�ŠÐ(ÐAÐAÐAÑBÔBÐBØð IØ�ŠÐ)ÐGÐGÐGÑHÔHÐHÝ
ˆ5�z„z�A‚~€~Ø�yŠy˜˜s ˜sœÑ$Ô$ wÑ.°°r´Ñ:Ð:Ø�7Š7�5‰>Œ>Ðr6   c           
      óü  — t          |                      ¦   «         d„ ¬¦  «        D ]Ö}|j        › d|j        › �}t          | |         d„ ¬¦  «        }t	          |¦  «        t	          |j        ¦  «        k    rt          j        d|› d�¦  «         Œit          j        d|› d�¦  «         |D ]R}d                     t          |j	        ¦  «        ¦  «        pd	}t          j        d
|j
        › d|› d|j        › �¦  «         ŒSŒ×dS )zBPretty-print selected cache revisions during confirmation prompts.c                 óB   — | j         | j                             ¦   «         fS ©N©Ú	repo_typeÚrepo_idÚlower©rX   s    r7   ú<lambda>z0print_cache_selected_revisions.<locals>.<lambda>„   s   € À$Ä.ÐRVÔR^×RdÒRdÑRfÔRfÐAg€ r6   ©Úkeyú/c                 ó   — | j         S rg   ©Úcommit_hash©Úrevs    r7   rm   z0print_cache_selected_revisions.<locals>.<lambda>†   ó   € À3Ä?€ r6   ú  - z (entire repo)ú:ú z
(detached)z      z [z] N)ÚsortedÚkeysri   rj   rU   r(   r#   Útextrb   r>   rs   Úsize_on_disk_str)rQ   rX   Úrepo_keyr(   Úrevisionr>   s         r7   Úprint_cache_selected_revisionsr€   ‚   s/  € åÐ'×,Ò,Ñ.Ô.Ð4gÐ4gÐhÑhÔhð 
[ð 
[ˆØ”nÐ5Ð5 t¤|Ð5Ð5ˆÝÐ+¨DÔ1Ð7RÐ7RÐSÑSÔSˆ	Ýˆy‰>Œ>�S ¤Ñ0Ô0Ò0Ð0ÝŒHÐ4˜HÐ4Ð4Ð4Ñ5Ô5Ð5ØåŒÐ#˜Ð#Ð#Ð#Ñ$Ô$Ð$Ø!ð 	[ð 	[ˆHØ—8’8�F 8¤=Ñ1Ô1Ñ2Ô2ÐB°lˆDÝŒHÐY˜hÔ2ÐYÐY°dÐYÐY¸hÔ>WÐYÐYÑZÔZÐZÐZð	[ð
[ð 
[r6   Úhf_cache_infoc                 ó²   — i }i }| j         D ]H}|j                             ¦   «         }|||<   |j        D ] }||f||j                             ¦   «         <   Œ!ŒI||fS )zPCreate lookup tables so CLI commands can resolve repo ids and revisions quickly.)ÚreposÚcache_idrk   r(   rs   )r�   Úrepo_lookupÚrevision_lookuprX   r~   r   s         r7   Úbuild_cache_indexr‡   ‘   s„   € ð .0€KØLN€OØÔ#ð Mð MˆØ”=×&Ò&Ñ(Ô(ˆØ $ˆ�HÑØœð 	Mð 	MˆHØ=AÀ8Ð<LˆO˜HÔ0×6Ò6Ñ8Ô8Ñ9Ð9ð	Mà˜Ð'Ð'r6   Útargetc                 ó˜   — t          | ¦  «        }|j        st          d¦  «        ‚|j        �|j        rdnd}t          d|› �¦  «        ‚|S )z;Parse and validate an hf:// target passed to `hf cache rm`.z:Only repository hf:// URIs are supported by `hf cache rm`.Nz@Drop '@<revision>' to delete the file from all cached revisions.z>Pass the revision hash instead, see 'hf cache ls --revisions'.z<Revisions in hf:// URIs are not supported by `hf cache rm`. )r   Úis_repor   r   Úpath_in_repo)rˆ   ÚuriÚhints      r7   Ú_parse_hf_uri_targetrŽ   ¢   sl   € å
�vÑ
Ô
€CØŒ;ð UÝÐSÑTÔTÐTØ
„|Ðð ÔðRÐNÐNàQð 	õ
 Ð\ÐVZÐ\Ð\Ñ]Ô]Ð]Ø€Jr6   rŒ   c                 ó$   — | j         › d| j        › �S )z,Return the `type/id` cache id of a repo URI.rp   )r@   Úid)rŒ   s    r7   Ú	_cache_idr‘   ±   s   € àŒhÐ!Ð!˜œÐ!Ð!Ð!r6   Úinclude_revisionsc                ó„  — g }i }t          | j        d„ ¬¦  «        }|D ]n}t          d„ |j        D ¦   «         ¦  «        ||<   |r2t          |j        d„ ¬¦  «        D ]}|                     ||f¦  «         ŒŒW|                     |df¦  «         Œo|r|                     d„ ¬¦  «         n|                     d„ ¬¦  «         ||fS )z;Flatten cache metadata into rows consumed by `hf cache ls`.c                 óB   — | j         | j                             ¦   «         fS rg   rh   rl   s    r7   rm   z'collect_cache_entries.<locals>.<lambda>¼   s   € ÀÄÐQUÔQ]×QcÒQcÑQeÔQeÐ@f€ r6   rn   c                 ó&   — h | ]}|j         D ]}|’ŒŒS r5   )r>   )Ú.0r   Úrefs      r7   ú	<setcomp>z(collect_cache_entries.<locals>.<setcomp>¾   s*   € Ð(eÐ(eÐ(e°ÐW_ÔWdÐ(eÐ(eÐPS¨Ð(eÐ(eÐ(eÐ(er6   c                 ó   — | j         S rg   rr   rt   s    r7   rm   z'collect_cache_entries.<locals>.<lambda>À   rv   r6   Nc                 óJ   — | d         j         | d         �| d         j        ndfS )Nr   r   r`   )r„   rs   ©Úentrys    r7   rm   z'collect_cache_entries.<locals>.<lambda>Æ   s+   € Ø�a”Ô!Ø(-¨a¬Ð(<��a”Ô$Ð$À"ð€ r6   c                 ó   — | d         j         S )Nr   )r„   r›   s    r7   rm   z'collect_cache_entries.<locals>.<lambda>Ì   s   €  u¨Q¤xÔ'8€ r6   )rz   rƒ   r0   r(   ra   Úsort)r�   r’   ÚentriesÚrepo_refs_mapÚsorted_reposrX   r   s          r7   Úcollect_cache_entriesr¢   ¶   s  € ð !#€GØ!#€MÝ˜-Ô-Ð3fÐ3fÐgÑgÔg€LØð )ð )ˆÝ'Ð(eÐ(e¸T¼^Ð(eÑ(eÔ(eÑfÔfˆ�dÑØð 	)Ý" 4¤>Ð7RÐ7RÐSÑSÔSð 1ð 1�Ø—’  hÐ/Ñ0Ô0Ð0Ð0ð1ð �NŠN˜D $˜<Ñ(Ô(Ð(Ð(Øð :Ø�Šðð ð 	ñ 	
ô 	
ð 	
ð 	
ð 	�ŠÐ8Ð8ˆÑ9Ô9Ð9Ø�MÐ!Ð!r6   Úexprr    c           
      ó0  ‡‡‡‡‡	‡
‡— t                                |                      ¦   «         ¦  «        }|st          d| › d�¦  «        ‚|                     d¦  «                             ¦   «         Š|                     d¦  «        Š|                     d¦  «                             ¦   «         Š‰t          vr+t          d‰› d| › dt          t          ¦  «        › d	�¦  «        ‚‰t          vr+t          d
‰› d| › dt          t          ¦  «        › d	�¦  «        ‚‰dk    rt          ‰¦  «        Š
ˆˆ
fd„S ‰dv rJt          ‰                     ¦   «         ¦  «        Š	dt          dt          dz  dt          dt          fˆˆˆ	fd„}|S ‰dk    rT‰                     ¦   «         Š‰dk    rt          d‰› d�¦  «        ‚dt          dt          dz  dt          dt          fˆfd„}|S ‰dk    rt          d‰› d	�¦  «        ‚dt          dt          dz  dt          dt          fˆˆfd„}|S )zqConvert a `hf cache ls` filter expression into the yes/no test we apply to each cache entry before displaying it.zInvalid filter expression: 'z'.ro   ÚopÚvaluezUnsupported operator 'z' in filter 'ú'. Must be one of ú.zUnsupported filter key 'ú' in 'r?   c                 óB   •— t          |�|j        n| j        ‰‰¦  «        S rg   )Ú_compare_numericÚsize_on_disk)rX   r   Ú_r¥   Úsize_thresholds      €€r7   rm   z&compile_cache_filter.<locals>.<lambda>ä   s+   ø€ Õ)9Ø%-Ð%9ˆHÔ!Ð!¸tÔ?PØØñ*
ô *
€ r6   >   rA   rB   rX   r   NÚnowrR   c                 ón   •— ‰dk    r| j         n|�|j        n| j        }|€dS t          ||z
  ‰‰¦  «        S )NrA   F)Úlast_accessedÚlast_modifiedr«   )rX   r   r¯   Ú	timestampro   r¥   Úsecondss       €€€r7   Ú_time_filterz*compile_cache_filter.<locals>._time_filterí   s\   ø€ ð ˜*Ò$Ð$ð Ô"Ð"ð Ð'ð Ô+Ð+àÔ'ð ð Ð Ø�uÝ# C¨)¡O°R¸ÑAÔAÐAr6   r@   r9   z/Only '=' is supported for 'type' filters. Got 'r­   c                 ó>   •— | j                              ¦   «         ‰k    S rg   )ri   rk   )rX   r   r­   Úexpecteds      €r7   Ú_type_filterz*compile_cache_filter.<locals>._type_filter  s   ø€ Ø”>×'Ò'Ñ)Ô)¨XÒ5Ð5r6   z.Only '=' is supported for 'refs' filters. Got c                 óš   •— |�|j         n!‰                     | t          ¦   «         ¦  «        }‰                     ¦   «         d„ |D ¦   «         v S )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r5   )rk   )r–   r—   s     r7   ú
<listcomp>z>compile_cache_filter.<locals>._refs_filter.<locals>.<listcomp>  s    € Ð(EÐ(EÐ(E¸¨¯ª©¬Ð(EÐ(EÐ(Er6   )r>   Úgetr0   rk   )rX   r   r­   r>   r    Ú	value_raws       €€r7   Ú_refs_filterz*compile_cache_filter.<locals>._refs_filter
  sO   ø€ Ø$,Ð$8�8”=�=¸m×>OÒ>OÐPTÕV_ÑVaÔVaÑ>bÔ>bˆDØ—?’?Ñ$Ô$Ð(EÐ(EÀÐ(EÑ(EÔ(EÐEÐEr6   )Ú_FILTER_PATTERNÚ	fullmatchÚstripÚ
ValueErrorÚgrouprk   Ú_ALLOWED_OPERATORSÚlistÚ_FILTER_KEYSr   r   r   r   ÚfloatÚbool)r£   r    Úmatchrµ   r¸   r¾   r·   ro   r¥   r´   r®   r½   s    `    @@@@@@r7   Úcompile_cache_filterrÊ   Ð   sÐ  øøøøøøø€ õ ×%Ò% d§j¢j¡l¤lÑ3Ô3€EØð BÝÐ@¸Ð@Ð@Ð@ÑAÔAÐAà
�+Š+�eÑ
Ô
×
"Ò
"Ñ
$Ô
$€CØ	�Š�TÑ	Ô	€BØ—’˜GÑ$Ô$×*Ò*Ñ,Ô,€Ià	Õ#Ð#Ð#ÝÐv°"ÐvÐvÀ4ÐvÐvÕ[_Õ`rÑ[sÔ[sÐvÐvÐvÑwÔwÐwà
•,ÐÐÝÐl°CÐlÐl¸tÐlÐlÕW[Õ\hÑWiÔWiÐlÐlÐlÑmÔmÐmà
ˆf‚}€}Ý# IÑ.Ô.ˆð
ð 
ð 
ð 
ð 
ð 	
ð Ð&Ð&Ð&Ý  §¢Ñ!2Ô!2Ñ3Ô3ˆð
	B�~ð 
	BÕ9KÈdÑ9Rð 
	BÕY^ð 
	BÕcgð 
	Bð 
	Bð 
	Bð 
	Bð 
	Bð 
	Bð 
	Bð 
	Bð Ðà
ˆf‚}€}Ø—?’?Ñ$Ô$ˆà�Š9ˆ9ÝÐUÈrÐUÐUÐUÑVÔVÐVð	6�~ð 	6Õ9KÈdÑ9Rð 	6ÕW\ð 	6Õaeð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð Ðð �Š9ˆ9ÝÐSÈbÐSÐSÐSÑTÔTÐTð	F�~ð 	FÕ9KÈdÑ9Rð 	FÕW\ð 	FÕaeð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð Ðr6   Úleftr¥   Úrightc                 óˆ   — | €dS | |k    | |k    | |k    | |k     | |k    | |k    dœ}||vrt          d|› �¦  «        ‚||         S )z)Evaluate numeric comparisons for filters.NF)r9   r;   r:   r8   r=   r<   z)Unsupported numeric comparison operator: )rÂ   )rË   r¥   rÌ   Úcomparisonss       r7   r«   r«     sr   € à€|Øˆuð �UŠ]Ø�eŠmØ�EŠ\Ø�EŠ\Ø�eŠmØ�eŠmðð €Kð 
�ÐÐÝÐIÀRÐIÐIÑJÔJÐJà�rŒ?Ðr6   Ú	sort_expr.c           
      ó  ‡— t                                |                      ¦   «                              ¦   «         ¦  «        }|st	          d| › d�¦  «        ‚|                     d¦  «                             ¦   «         Š|                     d¦  «        }‰t          vr+t	          d‰› d| › dt          t          ¦  «        › d�¦  «        ‚|r|nt          ‰         }|d	k    }d
t          dt          t          df         fˆfd„}||fS )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'.ro   ÚorderzUnsupported sort key 'r©   r§   r¨   rD   rœ   rR   .c                 ó2  •— | \  }}‰dk    r|j                              ¦   «         }|fS ‰dk    r|�|j        n|j        }|fS ‰dk    r|j        �|j        nd}|fS ‰dk    r&|�|j        �|j        nd}n|j        �|j        nd}|fS t          d‰› �¦  «        ‚)NrC   r?   rA   g        rB   zUnsupported sort key: )r„   rk   r¬   r±   r²   rÂ   )rœ   rX   r   r¦   ro   s       €r7   Ú	_sort_keyz%compile_cache_sort.<locals>._sort_key:  sÜ   ø€ Ø‰ˆˆhà�&Š=ˆ=àœ×,Ò,Ñ.Ô.ˆEØ�8ˆOà�&Š=ˆ=à-5Ð-A�HÔ)Ð)ÀtÔGXˆEØ�8ˆOà�*ÒÐð +/Ô*<Ð*H�DÔ&Ð&ÈcˆEØ�8ˆOà�*ÒÐàÐ#Ø2:Ô2HÐ2T˜Ô.Ð.ÐZ]��à.2Ô.@Ð.L˜Ô*Ð*ÐRU�Ø�8ˆOõ Ð7°#Ð7Ð7Ñ8Ô8Ð8r6   )Ú_SORT_PATTERNrÀ   rÁ   rk   rÂ   rÃ   Ú
_SORT_KEYSrÅ   Ú_SORT_DEFAULT_ORDERÚ
CacheEntryr4   r
   )rÏ   rÉ   Úexplicit_orderrÑ   ÚreverserÓ   ro   s         @r7   Úcompile_cache_sortrÚ   %  s  ø€ õ ×#Ò# I§O¢OÑ$5Ô$5×$;Ò$;Ñ$=Ô$=Ñ>Ô>€EØð xÝÐv°iÐvÐvÐvÑwÔwÐwà
�+Š+�eÑ
Ô
×
"Ò
"Ñ
$Ô
$€CØ—[’[ Ñ)Ô)€Nà
•*ÐÐÝÐm°#ÐmÐm¸YÐmÐmÕZ^Õ_iÑZjÔZjÐmÐmÐmÑnÔnÐnð -ÐJˆNˆNÕ2EÀcÔ2J€EØ�vŠo€Gð9�ð 9­­c°3¨h¬ð 9ð 9ð 9ð 9ð 9ð 9ð< �gÐÐr6   Útargetsc                 ór  ‡— ˆfd„|D ¦   «         }d„ |D ¦   «         }d„ |                      ¦   «         D ¦   «         }|rLt          |¦  «        t          t          |¦  «        ¦  «        k    rt          d¦  «        ‚t	          | |¦  «        S t          | ¦  «        \  }}t          t          ¦  «        }t          ¦   «         }g }|D �]-}	|	                     ¦   «         }
t          j	        d|
¦  «        rh| 
                    |
¦  «        }|€|                     |	¦  «         ŒY|\  }}||                              |¦  «         |                     |j        ¦  «         Œ”|	|v rt          ||	         ¦  «        n|	}| 
                    |                     ¦   «         ¦  «        }|€|                     |	¦  «         Œî|j        D ]7}||                              |¦  «         |                     |j        ¦  «         Œ8�Œ/d„ |                      ¦   «         D ¦   «         }t!          t#          |¦  «        |t%          |¦  «        ¬¦  «        S )	z8Resolve the deletion targets into a deletion resolution.c                 ó@   •— g | ]}|                      ¦   «         xŠ¯‰‘ŒS r5   )rÁ   )r–   rˆ   Ústrippeds     €r7   r»   z-_resolve_deletion_targets.<locals>.<listcomp>]  s+   ø€ ÐNÐNÐN˜F¸f¿lºl¹n¼nÐ2L°(ÐNˆxÐNÐNÐNr6   c                 óX   — i | ]'}|                      d ¦  «        ¯|t          |¦  «        “Œ(S )zhf://)Ú
startswithrŽ   )r–   rˆ   s     r7   ú
<dictcomp>z-_resolve_deletion_targets.<locals>.<dictcomp>^  s7   € ÐeÐeÐe°VÈ&×J[ÒJ[Ð\cÑJdÔJdÐeˆFÕ(¨Ñ0Ô0ÐeÐeÐer6   c                 ó(   — i | ]\  }}|j         ¯||“ŒS r5   )r‹   )r–   rˆ   rŒ   s      r7   rá   z-_resolve_deletion_targets.<locals>.<dictcomp>_  s&   € ÐQÐQÐQ¡ ¨ÀÔ@PÐQ�˜ÐQÐQÐQr6   zAFile targets cannot be mixed with repository or revision targets.z[0-9a-fA-F]{40}Nc                 ó4   — i | ]\  }}|t          |¦  «        “ŒS r5   )r0   )r–   rX   Úrevss      r7   rá   z-_resolve_deletion_targets.<locals>.<dictcomp>‚  s$   € ÐPÐPÐP±°°t�t�Y t™_œ_ÐPÐPÐPr6   )r(   r)   r*   )rT   rU   Úsetr   Ú_resolve_file_targetsr‡   r   rk   ÚrerÀ   r¼   ra   Úaddrs   r‘   r(   r'   r0   r4   )r�   rÛ   ÚurisÚ	file_urisr…   r†   r)   r(   r*   rˆ   ÚloweredrÉ   rX   r   r„   Úmatched_repoÚfrozen_selectedrÞ   s                    @r7   Ú_resolve_deletion_targetsrî   [  s>  ø€ àNÐNÐNÐN gÐNÑNÔN€GØeÐe¸wÐeÑeÔe€DØQÐQ°·
²
±´ÐQÑQÔQ€IØð ?Ýˆy‰>Œ>�S¥ W¡¤Ñ.Ô.Ò.Ð.ÝÐ^Ñ_Ô_Ð_Ý$ ]°IÑ>Ô>Ð>å#4°]Ñ#CÔ#CÑ €K�å>IÍ#Ñ>NÔ>N€HÝ™%œ%€IØ€Gàð 0ñ 0ˆØ—,’,‘.”.ˆåŒ<Ð*¨GÑ4Ô4ð 	Ø#×'Ò'¨Ñ0Ô0ˆEØˆ}Ø—’˜vÑ&Ô&Ð&ØØ"‰NˆD�(Ø�TŒN×Ò˜xÑ(Ô(Ð(Ø�MŠM˜(Ô.Ñ/Ô/Ð/Øà.4¸¨n¨n•9˜T &œ\Ñ*Ô*Ð*À&ˆØ"—’ x§~¢~Ñ'7Ô'7Ñ8Ô8ˆØÐØ�NŠN˜6Ñ"Ô"Ð"Øà$Ô.ð 	0ð 	0ˆHØ�\Ô"×&Ò& xÑ0Ô0Ð0Ø�MŠM˜(Ô.Ñ/Ô/Ð/Ð/ñ	0ð QÐP¸x¿~º~Ñ?OÔ?OÐPÑPÔP€OÝÝ˜IÑ&Ô&Ø Ý�g‘”ðñ ô ð r6   rê   c                 óÖ  ‡‡	— t          | ¦  «        \  }}i }g }|                     ¦   «         D ]‘\  }Š	|                     t          ‰	¦  «                             ¦   «         ¦  «        Š‰€|                     |¦  «         ŒQˆˆ	fd„‰j        D ¦   «         }|s|                     |¦  «         |                     |¦  «         Œ’t          t          ¦   «         i t          |¦  «        |¬¦  «        S )zYSelect the cached files matching hf:// file URIs, in every cached revision of their repo.Nc           	      óÌ   •— i | ]`}|j         D ]V}|j                             |j        ¦  «                             ¦   «         ‰j        k    ¯<|‰j        › d |j        › d‰j        › �“ŒWŒaS )ú@rp   )r,   Ú	file_pathÚrelative_toÚsnapshot_pathÚas_posixr‹   r„   rs   )r–   r   ÚfilerX   rŒ   s      €€r7   rá   z)_resolve_file_targets.<locals>.<dictcomp>”  s‹   ø€ ð 
ð 
ð 
àØ œð
ð 
ð ØŒ~×)Ò)¨(Ô*@ÑAÔA×JÒJÑLÔLÐPSÔP`Ò`Ð`ð �T”]ÐNÐN XÔ%9ÐNÐN¸CÔ<LÐNÐNð aÐ`Ð`Ð`r6   )r(   r)   r*   r,   )r‡   rT   r¼   r‘   rk   ra   r(   Úupdater'   r0   r4   )
r�   rê   r…   r­   r,   r*   rˆ   ÚmatchesrX   rŒ   s
           @@r7   ræ   ræ   Š  sü   øø€ å& }Ñ5Ô5�N€K�Ø')€EØ€GØ —’Ñ(Ô(ð ð ‰ˆ�Ø�Š�y¨™~œ~×3Ò3Ñ5Ô5Ñ6Ô6ˆØˆ<Ø�NŠN˜6Ñ"Ô"Ð"Øð
ð 
ð 
ð 
ð 
à œNð
ñ 
ô 
ˆð ð 	#Ø�NŠN˜6Ñ"Ô"Ð"Ø�Š�WÑÔÐÐÝ­©¬¸rÍ5ÐQXÉ>Ì>ÐafÐgÑgÔgÐgr6   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.Úshow_warningsz*Show warnings about cache inconsistencies.c                 óz  ‡‡‡— 	 t          | ¦  «        }n*# t          $ r}t          d|j        › �¦  «        |‚d}~ww xY w|pg }t	          ||¬¦  «        \  }	Š	 ˆfd„|D ¦   «         }
n4# t
          $ r'}t          j        t          |¦  «        ¦  «        |‚d}~ww xY wt          j	        ¦   «         Š|
D ]Šˆˆfd„|	D ¦   «         }	Œ|rd	 t          |j        ¦  «        \  }}|	                     ||¬¦  «         n4# t
          $ r'}t          j        t          |¦  «        ¦  «        |‚d}~ww xY w|�(|dk     rt          j        d|› d	�¦  «        ‚|	d|…         }	|r)d
„ |	D ¦   «         }t          j        |g d¢dddi¬¦  «         n*ˆfd„|	D ¦   «         }t          j        |g d¢dddi¬¦  «         |	rËd„ |	D ¦   «         }t          |¦  «        }|r3t!          d„ |	D ¦   «         ¦  «        }t!          d„ |	D ¦   «         ¦  «        }n>t!          d„ |D ¦   «         ¦  «        }|s|�t!          d„ |D ¦   «         ¦  «        }n|j        }t          j        t'          j        d|› d|› dt+          |¦  «        › d�¦  «        ¦  «         t          |j        ¦  «        rn|rB|j        D ]9}t          j        t          |¦  «                             d	¦  «        dz   ¦  «         Œ:n*t          j        dt          |j        ¦  «        › d�¦  «         |j        }|r<t          j        dt          |¦  «        › dt+          |j        ¦  «        › d �¦  «         dS dS )!z&List cached repositories or revisions.úCache directory not found: N)r’   c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS r5   )rÊ   )r–   r£   r    s     €r7   r»   zls.<locals>.<listcomp>á  s$   ø€ ÐTÐTÐTÀDÕ*¨4°Ñ?Ô?ÐTÐTÐTr6   c                 óF   •— g | ]} ‰|d          |d         ‰¦  «        ¯|‘ŒS )r   r   r5   )r–   rœ   Úfnr¯   s     €€r7   r»   zls.<locals>.<listcomp>ç  s4   ø€ ÐMÐMÐM˜U°°°E¸!´H¸eÀA¼hÈÑ1LÔ1LÐM�5ÐMÐMÐMr6   )ro   rÙ   r   z&Limit must be a positive integer, got r¨   c                 ó²   — g | ]T\  }}|®|j         |j        |j        |j        t	          |j        ¦  «        |j        |j        t          |j	        ¦  «        dœ‘ŒUS )N)r�   rj   ri   r   rô   r?   r²   r>   )
r„   rj   ri   rs   r1   rô   r}   Úlast_modified_strrz   r>   )r–   rX   r   s      r7   r»   zls.<locals>.<listcomp>ø  ss   € ð 
ð 
ð 
ñ ��hØÐ#ð ”mØœ<Ø!œ^Ø$Ô0Ý!$ XÔ%;Ñ!<Ô!<Ø Ô1Ø!)Ô!;Ý˜xœ}Ñ-Ô-ð	ð 	ð $Ð#Ð#r6   )r�   r   r?   r²   r>   r   r?   rÌ   )ÚheadersÚid_keyÚ
alignmentsc                 óÄ   •— g | ]\\  }}|j         |j        |j        |j        |j        pd |j        t          ‰                     |t          ¦   «         ¦  «        ¦  «        dœ‘Œ]S )r`   )r�   rj   ri   r?   r±   r²   r>   )	r„   rj   ri   r}   Úlast_accessed_strr  rz   r¼   r0   )r–   rX   r­   r    s      €r7   r»   zls.<locals>.<listcomp>  s{   ø€ ð 
ð 
ð 
ñ ��að ”mØœ<Ø!œ^ØÔ-Ø!%Ô!7Ð!=¸2Ø!%Ô!7Ý˜}×0Ò0°µy±{´{ÑCÔCÑDÔDðð ð
ð 
ð 
r6   )r�   r?   r±   r²   r>   r�   c                 ó   — h | ]\  }}|’ŒS r5   r5   )r–   rX   r­   s      r7   r˜   zls.<locals>.<setcomp>!  s   € Ð4Ð4Ð4¡  q˜Ð4Ð4Ð4r6   c              3   ó$   K  — | ]\  }}|®dV — Œd S )Nr   r5   ©r–   r­   ru   s      r7   ú	<genexpr>zls.<locals>.<genexpr>$  s&   è è € Ð LÐ L¡v q¨#¸C¸O ¸O¸O¸O¸OÐ LÐ Lr6   c              3   ó.   K  — | ]\  }}|®|j         V — Œd S rg   ©r¬   r  s      r7   r  zls.<locals>.<genexpr>%  s)   è è € ÐWÐW±&°!°SÀsÀ˜SÔ-ÀÀÀÀÐWÐWr6   c              3   ó>   K  — | ]}t          |j        ¦  «        V — Œd S rg   )rU   r(   ©r–   rX   s     r7   r  zls.<locals>.<genexpr>'  s,   è è € Ð NÐ N¸¥ T¤^Ñ!4Ô!4Ð NÐ NÐ NÐ NÐ NÐ Nr6   c              3   ó$   K  — | ]}|j         V — Œd S rg   r  r  s     r7   r  zls.<locals>.<genexpr>)  s%   è è € Ð LÐ L°t Ô!2Ð LÐ LÐ LÐ LÐ LÐ Lr6   z
Found z repo(s) for a total of z revision(s) and z	 on disk.z. Repo ignored.zFound zF cache inconsistencies. Re-run with `--show-warnings` to display them.z" incomplete download(s) totalling z$. Remove them with 'hf cache prune'.)r   r   r   rú   r¢   rÂ   ÚclickÚBadParameterr1   ÚtimerÚ   r¦   rž   r#   ÚtablerU   Úsumr¬   r|   r   Úboldr   ÚwarningsÚwarningÚrstripÚincomplete_filesr�   Úincomplete_size_on_disk)rú   r(   rû   rž   rü   rý   r�   ÚexcÚfiltersrŸ   Ú
filter_fnsÚsort_key_fnrÙ   rT   Úunique_reposrL   rZ   Ú
total_sizer  r  r  r¯   r    s                       @@@r7   Úlsr$  £  s–  øøø€ ðjOÝ& yÑ1Ô1ˆˆøÝð Oð Oð OÝÐD°S´]ÐDÐDÑEÔEÈ3ÐNøøøøðOøøøð ˆl˜€Gå2°=ÐT]Ð^Ñ^Ô^Ñ€Gˆ]ð4ØTÐTÐTÐTÈGÐTÑTÔTˆ
ˆ
øÝð 4ð 4ð 4ÝÔ ¥ S¡¤Ñ*Ô*°Ð3øøøøð4øøøõ Œ)‰+Œ+€CØð Nð NˆØMÐMÐMÐMÐM gÐMÑMÔMˆˆð ð 8ð	8Ý#5°d´jÑ#AÔ#AÑ ˆK˜Ø�LŠL˜[°'ˆLÑ:Ô:Ð:Ð:øÝð 	8ð 	8ð 	8ÝÔ$¥S¨¡X¤XÑ.Ô.°CÐ7øøøøð	8øøøð ÐØ�1Š9ˆ9ÝÔ$Ð%VÈeÐ%VÐ%VÐ%VÑWÔWÐWØ˜&˜5˜&”/ˆàð '
ð
ð 
ð #*ð
ñ 
ô 
ˆõ 	Œ	ØØGÐGÐGØØ Ð(ð		
ñ 	
ô 	
ð 	
ð 	
ð
ð 
ð 
ð 
ð #ð
ñ 
ô 
ˆõ 	Œ	ØØLÐLÐLØØ Ð(ð		
ñ 	
ô 	
ð 	
ð ð 
Ø4Ð4¨GÐ4Ñ4Ô4ˆÝ˜Ñ&Ô&ˆ
Øð 		8Ý Ð LÐ L°Ð LÑ LÔ LÑLÔLˆNÝÐWÐW¸GÐWÑWÔWÑWÔWˆJˆJå Ð NÐ NÀÐ NÑ NÔ NÑNÔNˆNØð 8˜%Ð+Ý Ð LÐ L¸|Ð LÑ LÔ LÑLÔL�
�
ð +Ô7�
ÝŒÝŒIð<˜:ð <ð <¸~ð <ð <Ý$ ZÑ0Ô0ð<ð <ð <ñô ñ	
ô 	
ð 	
õ ˆ=Ô!Ñ"Ô"ð Øð 	Ø(Ô1ð Jð J�Ý”�C ™LœL×/Ò/°Ñ4Ô4Ð7HÑHÑIÔIÐIÐIðJõ ŒKØ|�˜]Ô3Ñ4Ô4Ð|Ð|Ð|ñô ð ð %Ô5ÐØð 
ÝŒð1•SÐ)Ñ*Ô*ð 1ð 1Ý˜MÔAÑBÔBð1ð 1ð 1ñ	
ô 	
ð 	
ð 	
ð 	
ð
ð 
s@   … •
<Ÿ7·<ÁA' Á'
BÁ1"BÂBÃ.C4 Ã4
D%Ã>"D Ä D%)zhf cache rm model/gpt2z-hf cache rm hf://models/openai-community/gpt2z?hf cache rm hf://models/openai-community/gpt2/model.safetensorszhf cache rm <revision_hash>z hf cache rm model/gpt2 --dry-runzhf cache rm model/gpt2 --yeszmOne or more repo IDs (e.g. model/bert-base-uncased), hf:// URIs (repo or file), or revision hashes to delete.Úyesz-yz--yeszSkip confirmation prompt.Údry_runz,Preview deletions without removing anything.c           	      ó8  — 	 t          |¦  «        }n*# t          $ r}t          d|j        › �¦  «        |‚d}~ww xY wt	          || ¦  «        }|j        r;d                     d„ |j        D ¦   «         ¦  «        }t          j        d|› �¦  «         |j	        �r, |j
        |j	        Ž }t          j        dt          |j	        ¦  «        › d|j        › d�¦  «         t          |j	                             ¦   «         ¦  «        D ]}	t          j        d	|	› �¦  «         Œ|r1t          j        d
dt          |j	        ¦  «        |j        ¬¦  «         dS t          j        d|¬¦  «         |                     ¦   «          t          j        dt          |j	        ¦  «        › d|j        › d�t          |j	        ¦  «        |j        ¬¦  «         dS t          |j        ¦  «        dk    r4t          j        d¦  «         t(          j                             d¬¦  «        ‚ |j        t          |j        ¦  «        Ž }t1          |j        ¦  «        }
g }|
j        r|                     |
j        › d�¦  «         |
j        r|                     |
j        › d�¦  «         |s|                     |
j        › d�¦  «         d                     |¦  «        }t          j        d|› d|j        › d�¦  «         t=          |j        ¦  «         |r*t          j        d
d|
j        |
j        |j        ¬¦  «         dS t          j        d|¬¦  «         |                     ¦   «          t1          |j        ¦  «        }
t          j        d|
j        › d|
j        › d|j        › d�|
j        |
j        |j        ¬¦  «         dS )z/Remove cached repositories, revisions or files.rÿ   Nú
c              3   ó    K  — | ]	}d |› �V — Œ
dS ©rw   Nr5   )r–   rœ   s     r7   r  zrm.<locals>.<genexpr>u  s(   è è € ÐKÐK¨u˜N 5˜N˜NÐKÐKÐKÐKÐKÐKr6   zCould not find in cache:
úAbout to delete z file(s) totalling r¨   rw   úDry run: no files were deleted.T)r&  r,   r?   zProceed with deletion?©r%  úDeleted z file(s); freed )Úfiles_deletedÚfreedr   zNothing to delete.©Úcodez repo(s)z revision(s)r_   z totalling )r&  rƒ   r(   r?   z repo(s) and z revision(s); freed )Úrepos_deletedÚrevisions_deletedr0  )r   r   r   rú   rî   r*   rb   r#   r  r,   Údelete_filesr|   rU   Úexpected_freed_size_strrz   ÚvaluesÚresultÚconfirmÚexecuter(   r  Ú
exceptionsÚExitÚdelete_revisionsrY   r)   rL   ra   rM   rN   r€   )rÛ   rú   r%  r&  r�   r  Ú
resolutionÚdetailsÚstrategyÚlabelÚcountsÚsummary_partsÚsummary_texts                r7   ÚrmrE  F  s  € ðNOÝ& yÑ1Ô1ˆˆøÝð Oð Oð OÝÐD°S´]ÐDÐDÑEÔEÈ3ÐNøøøøðOøøøõ +¨=¸'ÑBÔB€JàÔð <Ø—)’)ÐKÐK¸
Ô8JÐKÑKÔKÑKÔKˆÝŒÐ:°Ð:Ð:Ñ;Ô;Ð;àÔñ Ø-�=Ô-¨zÔ/?Ð@ˆÝŒÐq¥C¨
Ô(8Ñ$9Ô$9ÐqÐqÈhÔNnÐqÐqÐqÑrÔrÐrÝ˜JÔ,×3Ò3Ñ5Ô5Ñ6Ô6ð 	%ð 	%ˆEÝŒH�^˜E�^�^Ñ$Ô$Ð$Ð$Øð 	ÝŒJØ1ØÝ˜*Ô*Ñ+Ô+ØÔ5ð	ñ ô ð ð ˆFÝŒÐ,°#Ð6Ñ6Ô6Ð6Ø×ÒÑÔÐÝŒ
Øa•s˜:Ô+Ñ,Ô,ÐaÐa¸hÔ>^ÐaÐaÐaÝ˜jÔ.Ñ/Ô/ØÔ2ð	
ñ 	
ô 	
ð 	
ð
 	ˆå
ˆ:ÔÑ Ô  AÒ%Ð%ÝŒÐ%Ñ&Ô&Ð&ÝÔ×#Ò#¨Ð#Ñ+Ô+Ð+à-ˆ}Ô-­v°jÔ6JÑ/KÔ/KÐL€HÝ  Ô!4Ñ5Ô5€Fà!€MØÔð =Ø×Ò Ô 1Ð;Ð;Ð;Ñ<Ô<Ð<ØÔ$ð MØ×Ò Ô =ÐKÐKÐKÑLÔLÐLØð KØ×Ò Ô ;ÐIÐIÐIÑJÔJÐJà—<’< Ñ.Ô.€LÝ„HÐ\ Ð\Ð\¸Ô9YÐ\Ð\Ð\Ñ]Ô]Ð]Ý" :Ô#6Ñ7Ô7Ð7àð ÝŒ
Ø-ØØÔ#ØÔ1ØÔ1ð	
ñ 	
ô 	
ð 	
ð 	ˆå„KÐ(¨cÐ2Ñ2Ô2Ð2à×ÒÑÔÐÝ  Ô!4Ñ5Ô5€FÝ„Jð	6�6Ô$ð 	6ð 	6°6Ô3Nð 	6ð 	6ØÔ2ð	6ð 	6ð 	6àÔ'Ø Ô5ØÔ.ðñ ô ð ð ð s   ‚ ’
9œ4´9zhf cache prunezhf cache prune --dry-runc           
      ó
  — 	 t          | ¦  «        }n*# t          $ r}t          d|j        › �¦  «        |‚d}~ww xY wi }t	          ¦   «         }|j        D ]G}t          d„ |j        D ¦   «         ¦  «        }|sŒ#|||<   |                     d„ |D ¦   «         ¦  «         ŒH|j	        }	|j        �t          j        |j        ¦  «        ni }
t          |¦  «        dk    r|	s|
st          j        d¦  «         dS  |j        t!          |¦  «        Ž }t#          |¦  «        }|j        |j        z   t)          |
                     ¦   «         ¦  «        z   }t-          |j        t          |	¦  «        t          |
¦  «        ¦  «        }t          j        d|› dt1          |¦  «        › d	�¦  «         t3          |¦  «         |rHt          j        d
d|j        t          |	¦  «        t          |
¦  «        t1          |¦  «        ¬¦  «         dS t          j        d|¬¦  «         |                     ¦   «          |	D ]]}	 |j                             ¦   «          Œ# t>          $ r Y Œ)t@          $ r)}t          j!        d|j        › d|› �¦  «         Y d}~ŒVd}~ww xY w|j        � |
D ]}t          j"        ||j        ¬¦  «         Œt          j        d|› dt1          |¦  «        › d�|j        t          |	¦  «        t          |
¦  «        t1          |¦  «        ¬¦  «         dS )zBRemove detached revisions and incomplete downloads from the cache.rÿ   Nc              3   óJ   K  — | ]}t          |j        ¦  «        d k    ¯|V — ŒdS )r   N)rU   r>   ©r–   r   s     r7   r  zprune.<locals>.<genexpr>Ø  s7   è è € Ð`Ð`¨(ÍÈHÌMÑHZÔHZÐ^_ÒH_ÐH_˜XÐH_ÐH_ÐH_ÐH_Ð`Ð`r6   c              3   ó$   K  — | ]}|j         V — Œd S rg   rr   rH  s     r7   r  zprune.<locals>.<genexpr>Ü  s%   è è € ÐGÐG°(˜Ô-ÐGÐGÐGÐGÐGÐGr6   r   zXNo unreferenced revisions, incomplete downloads or shared blobs found. Nothing to prune.r+  ú (z total).r,  T)r&  r(   Ú
incompleteÚshared_blobsr?   zProceed?r-  z!Could not delete incomplete file z: )rú   r.  z; freed r¨   )r4  Úincomplete_deletedÚshared_blobs_deletedr0  )#r   r   r   rú   rå   rƒ   r0   r(   r÷   r  r   Úunreferenced_shared_blobsrU   r#   r|   r=  rz   rY   Úexpected_freed_sizer  r  r7  rd   rN   r   r€   r8  r9  r:  rò   ÚunlinkÚFileNotFoundErrorÚOSErrorr  Úsweep_shared_blob)rú   r%  r&  r�   r  r)   r(   rX   Údetachedr  Úunreferenced_blobsr@  rB  Útotal_freedÚsummaryÚincomplete_fileÚ
store_paths                    r7   Úpruner[  ¸  s¨  € ð0OÝ& yÑ1Ô1ˆˆøÝð Oð Oð OÝÐD°S´]ÐDÐDÑEÔEÈ3ÐNøøøøðOøøøð EG€HÝ™%œ%€IØÔ#ð Hð HˆÝÐ`Ð`°d´nÐ`Ñ`Ô`Ñ`Ô`ˆØð 	ØØ!ˆ�‰Ø×ÒÐGÐG¸hÐGÑGÔGÑGÔGÐGÐGà$Ô5Ðð MZÔLcÐLo�Ô/°Ô0GÑHÔHÐHÐuwð õ ˆ9�~„~˜ÒÐÐ#3ÐÐ<NÐÝŒÐkÑlÔlÐlØˆà-ˆ}Ô-­v°iÑ/@Ô/@ÐA€HÝ  Ñ*Ô*€FàÔ$ }Ô'LÑLÍsÐSe×SlÒSlÑSnÔSnÑOoÔOoÑoð õ ˜VÔ8½#Ð>NÑ:OÔ:OÕQTÐUgÑQhÔQhÑiÔi€GÝ„HÐN ÐNÐN­<¸Ñ+DÔ+DÐNÐNÐNÑOÔOÐOÝ" 8Ñ,Ô,Ð,àð 	ÝŒ
Ø-ØØÔ1ÝÐ+Ñ,Ô,ÝÐ/Ñ0Ô0Ý˜kÑ*Ô*ð	
ñ 	
ô 	
ð 	
ð 	ˆå„K�
 Ð$Ñ$Ô$Ð$à×ÒÑÔÐØ+ð `ð `ˆð	`ØÔ%×,Ò,Ñ.Ô.Ð.Ð.øÝ ð 	ð 	ð 	ØˆDÝð 	`ð 	`ð 	`ÝŒKÐ^¸OÔ<UÐ^Ð^ÐY\Ð^Ð^Ñ_Ô_Ð_Ð_Ð_Ð_Ð_Ð_øøøøð	`øøøàÔÐ*Ø,ð 	[ð 	[ˆJÝÔ+¨JÀ-ÔBYÐZÑZÔZÐZÐZÝ„JØ@�7Ð@Ð@¥L°Ñ$=Ô$=Ð@Ð@Ð@Ø Ô5ÝÐ/Ñ0Ô0Ý Ð!3Ñ4Ô4Ý˜;Ñ'Ô'ðñ ô ð ð ð s.   ‚ ’
9œ4´9È(IÉ
J É	J ÉI;É;J )zhf cache verify gpt2z)hf cache verify gpt2 --revision refs/pr/1z.hf cache verify my-dataset --repo-type datasetrj   ri   r   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|�4t          j        d¦  «         t          j                             d¬¦  «        ‚t          |¬¦  «        }|                     | t          |d¦  «        r|j        nt          |¦  «        ||||¬¦  «        }	d}
|	j
        r=d	                     d
„ |	j
        D ¦   «         ¦  «        }t          j        d|› �¦  «         d}
|	j        ri|r>d	                     d„ |	j        D ¦   «         ¦  «        }t          j        d|› �¦  «         d}
n)t          j        t          |	j        ¦  «        › d�¦  «         |	j        ri|r>d	                     d„ |	j        D ¦   «         ¦  «        }t          j        d|› �¦  «         d}
n)t          j        t          |	j        ¦  «        › d�¦  «         |	j        }|
dk    rJt          j        d| › d|j        › d|› d|	j        › �¦  «         t          j                             |
¬¦  «        ‚t          j        d|	j        › d|j        › d| › d�| |j        |	j        t          |¦  «        ¬¦  «         dS )a«  Verify checksums for a single repo revision from cache or a local directory.

    Examples:
      - Verify main revision in cache: `hf cache verify gpt2`
      - Verify specific revision: `hf cache verify gpt2 --revision refs/pr/1`
      - Verify dataset: `hf cache verify karpathy/fineweb-edu-100b-shuffle --repo-type dataset`
      - Verify local dir: `hf cache verify deepseek-ai/DeepSeek-OCR --local-dir /path/to/repo`
    NzCCannot pass both --local-dir and --cache-dir. Use one or the other.r   r1  )r_  r¦   )rj   ri   r   r\  rú   r_  r   r(  c           
   3   ób   K  — | ]*}d |d         › d|d         › d|d         › d|d         › �V — Œ+dS )	rw   Úpathz: expected r·   rJ  Ú	algorithmz), got ÚactualNr5   )r–   Úms     r7   r  zverify.<locals>.<genexpr>U  sj   è è € ð 
ð 
àð _�1�V”9Ð^Ð^¨¨:¬Ð^Ð^¸!¸K¼.Ð^Ð^ÐQRÐS[ÔQ\Ð^Ð^ð
ð 
ð 
ð 
ð 
ð 
r6   u<   â�Œ Checksum verification failed for the following file(s):
r   c              3   ó    K  — | ]	}d |› �V — Œ
dS r*  r5   ©r–   Úps     r7   r  zverify.<locals>.<genexpr>^  s(   è è € ÐIÐI¨q 
 q 
 
ÐIÐIÐIÐIÐIÐIr6   u6   â�Œ Missing files (present remotely, absent locally):
zM remote file(s) are missing locally. Use --fail-on-missing-files for details.c              3   ó    K  — | ]	}d |› �V — Œ
dS r*  r5   rg  s     r7   r  zverify.<locals>.<genexpr>i  s(   è è € ÐGÐG¨q 
 q 
 
ÐGÐGÐGÐGÐGÐGr6   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.)rj   ri   Úcheckedrb  )r#   Úerrorr  r;  r<  r   Úverify_repo_checksumsÚhasattrr¦   r1   Ú
mismatchesrb   r|   Úmissing_pathsr  rU   Úextra_pathsÚverified_pathr   r8  Úchecked_count)rj   ri   r   rú   r\  r]  r^  r_  Úapir8  Ú	exit_coder?  Úverified_locations                r7   Úverifyrv    sÕ  € ð` Ð Ð!6ÝŒ	ÐWÑXÔXÐXÝÔ×#Ò#¨Ð#Ñ+Ô+Ð+å
˜5Ð
!Ñ
!Ô
!€Cà×&Ò&ØÝ%,¨Y¸Ñ%@Ô%@ÐT�)”/�/ÅcÈ)ÁnÄnØØØØð 'ñ ô €Fð €IàÔð Ø—)’)ð 
ð 
àÔ&ð
ñ 
ô 
ñ 
ô 
ˆõ 	ŒÐZÐQXÐZÐZÑ[Ô[Ð[Øˆ	àÔð 	Ø ð 	Ø—i’iÐIÐI°FÔ4HÐIÑIÔIÑIÔIˆGÝŒHÐXÈwÐXÐXÑYÔYÐYØˆIˆIåŒKÝ�vÔ+Ñ,Ô,ð ;ð ;ð ;ñô ð ð
 Ôð 	Øð 	Ø—i’iÐGÐG°FÔ4FÐGÑGÔGÑGÔGˆGÝŒHÐVÈWÐVÐVÑWÔWÐWØˆIˆIåŒKÝ�vÔ)Ñ*Ô*ð 9ð 9ð 9ñô ð ð
 Ô,Ðà�A‚~€~ÝŒ	Ø}¨Ð}Ð}°I´OÐ}Ð}ÐJ[Ð}Ð}ÐlrÔl{Ð}Ð}ñ	
ô 	
ð 	
õ Ô×#Ò#¨Ð#Ñ3Ô3Ð3å„JØj�FÔ(ÐjÐj°y´ÐjÐjÈ'ÐjÐjÐjØØ”/ØÔ$ÝÐ"Ñ#Ô#ðñ ô ð ð ð r6   )NFNNNF)NFF)YrO   rç   r  Úcollectionsr   Úcollections.abcr   r   Údataclassesr   r   Úenumr   Útypingr	   r
   r  Úhuggingface_hub.errorsr   Úutilsr   r   r   r   r   r   r   r   r   r   r   Úutils._parsingr   r   Ú
_cli_utilsr   r   r   r   r   r    Ú
_frameworkr!   r"   Ú_outputr#   Ú	cache_clir'   Úcompiler¿   rÄ   rÆ   rÕ   rÔ   rÖ   Ú_sort_options_dictrz   ro   r1   r-   rH   rK   r4   r×   r3   r0   ÚRepoRefsMaprY   rP   rd   r€   r‡   rŽ   r‘   rÈ   rÅ   r¢   rÇ   rÊ   r«   rÚ   rî   ræ   Úcommandr$  rE  r[  Úmodelrv  r5   r6   r7   ú<module>rˆ     s<  ðð OÐ Nà 	€	€	€	Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !à €€€à +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ð `Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð ð ˆMÐ>Ð?Ñ?Ô?€	ð €�$ÐÑÔðCð Cð Cð Cð Cñ Cô Cñ ÔðCð �"”*Ð_Ñ`Ô`€Ø6Ð6Ð6Ð Ø?Ð?Ð?€Ø5Ð5Ð5€
Ø�”
ÐJÑKÔK€ð ØØØðð Ð ð Ð Øˆ6�*ÑÔð 6ð 6€CØ!Ð�sÑØ*- | | |Ð˜#�|�|�|Ñ$Ø+.¨¨¨Ð˜#�}�}�}Ñ%Ð%àˆd�=Ð"4¸3ÀxÐPÑPÔP€ð €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð �>Ð#5¸Ñ#<Ð<Ô=€
Ø�> 9¨S¤>Ð1Ô2€ðTØ˜n¨iÐ8JÔ.KÐKÔLðTàðTð Tð Tð Tð$ 3ð ¸#ð ÐRUð ÐZ]ð ð ð ð ð[°W¸^ÈYÐWiÔMjÐ=jÔ5kð [Ðptð [ð [ð [ð [ð(Øð(à
ØˆˆnÐ	ÔØˆˆe�NÐ$6Ð6Ô7Ð	7Ô8ð:ôð(ð (ð (ð (ð" ð ¨ð ð ð ð ð"�5ð "˜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ð 3ð 3ð 3ðl,¨[ð ,À4ÈÄ9ð ,ÐQdð ,ð ,ð ,ð ,ð^h¨ð hÀÀcÈ5ÀjÔAQð hÐVið hð hð hð hð2 ×ÒØðð ð ð ñ ô ð 	ð 	ð 	ð 	ð 	ð 	ðSW
ð W
ØØˆd‰
ØˆØLð	
ñ 	
ô 	
ð	ôðW
ð ØØˆØVð	
ñ 	
ô 	
ð	ôðW
ð ØˆSŒ	�DÑØˆØØØmð	
ñ 	
ô 	
ð	ôðW
ð* Ø�dÑØˆð7ð	
ñ 	
ô 	
ð	ôð+W
ð< Øˆd‰
ØˆØfð	
ñ 	
ô 	
ð	ôð=W
ðH ØØˆØ=ð	
ñ 	
ô 	
ð	ôðIW
ðT 
ðUW
ð W
ð W
ñô ðW
ðt ×Òðð ð ð ñ 	ô 	ð, 	ð 	ð 	ð5eð eØØˆSŒ	Øˆð Að	
ñ 	
ô 	
ð	ôðeð Øˆd‰
ØˆØLð	
ñ 	
ô 	
ð	ôðeð 
ØØˆØØØ,ð	
ñ 	
ô 	
ð	ô
ðeð* ØØˆØ?ð	
ñ 	
ô 	
ð	ôð+eð6 
ð7eð eð eñ	ô 	ðeðP ×ÒÐ-Ð/IÐJÐÑKÔKð 	ð 	ð 	ð)Wð WØØˆd‰
ØˆØLð	
ñ 	
ô 	
ð	ôðWð 
ØØˆØØØ,ð	
ñ 	
ô 	
ð	ô
ðWð ØØˆØ?ð	
ñ 	
ô 	
ð	ôðWð* 
ð+Wð Wð Wñ LÔKðWðt ×Òðð ð ð ñ ô ð )Ô.Ø ð 	ð 	ð 	ð 	Øð=fð fØðfàðfð ðfð Øˆd‰
ØˆØkð	
ñ 	
ô 	
ð	ôð	fð Øˆd‰
ØˆØRð	
ñ 	
ô 	
ð	ôðfð  %ØØˆØ%ØRð	
ñ 	
ô 	
ð	ôð!fð. #ØØˆØ#Ø_ð	
ñ 	
ô 	
ð	ôð/fð< ð=fð> 
ð?fð fð fñô ðfð fð fr6   