Ë
    ÂÓ^j›m  ã                   óè  — 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&m'Z' ddl(m)Z)  e$d¬«      Z* e	d¬«       G d„ d«      «       Z+ ejX                  d«      Z-h d£Z.h d£Z/h d£Z0 ejX                  d«      Z1dddddœZ2i Z3 e4e0«      D ]  Z5e5e3e5<   e5› d�e3e5› d�<   e5› d �e3e5› d!�<   Œ  ed"e3e6e7¬#«      Z8 e	d¬«       G d$„ d%«      «       Z9e:eedz  f   Z;e<ee=e6   f   Z>d&eee=e   f   d'e9fd(„Z?d)e@d*e@d'e6fd+„ZAd&eee=e   f   d'dfd,„ZBd-ed'e:e<e6ef   e<e6e:eef   f   f   fd.„ZCd/e6d'e6fd0„ZDd-ed1eEd'e:eFe;   e>f   fd2„ZGd3e6d4e>d'eeedz  eHgeEf   fd5„ZId6eHdz  d7e6d8eHd'eEfd9„ZJd:e6d'e:ee;ge:ed;f   f   eEf   fd<„ZKd-ed=eFe6   d'e+fd>„ZLe*j›                  d?g d@¢¬A«      	 	 	 	 	 dkdCee6dz   e'dD¬«      f   dEeeE e'dF¬«      f   dGeeFe6   dz   e'dHdIdJ¬«      f   dKee8dz   e'dL¬«      f   dMee@dz   e'dN¬«      f   d'dfdO„«       ZNe*j›                  g dP¢¬A«      	 	 	 dld=eeFe6    e&dQ¬«      f   dCee6dz   e'dD¬«      f   dReeE e'dSdTdU¬«      f   dVeeE e'dW¬«      f   d'df
dX„«       ZOe*j›                  dYdZg¬A«      	 	 	 dldCee6dz   e'dD¬«      f   dReeE e'dSdTdU¬«      f   dVeeE e'dW¬«      f   d'dfd[„«       ZPe*j›                  g d\¢¬A«      e j¢                  ddddBdBdfd]ed^e d_e!dCee6dz   e'd`¬«      f   daee6dz   e'db¬«      f   dceeE e'ddde¬«      f   dfeeE e'dgdh¬«      f   die"d'dfdj„«       ZRy)mzHContains 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)ÚArgumentÚOption)Ú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© ó    úd/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/huggingface_hub/cli/cache.pyr#   r#   2   s0   … à˜‰~ÓØ�> 9Ð-?Ñ#@Ð@ÑAÓAØ�3˜�8‰_Ôr0   r#   zA^(?P<key>[a-zA-Z_]+)\s*(?P<op>==|!=|>=|<=|>|<|=)\s*(?P<value>.+)$>   ú<ú=ú>ú!=ú<=ú>=>   ÚrefsÚsizeÚtypeÚaccessedÚmodified>   Únamer9   r;   r<   z.^(?P<key>[a-zA-Z_]+)(?::(?P<order>asc|desc))?$ÚdescÚasc)r;   r<   r9   r=   z:ascÚ_ascz:descÚ_descÚSortOptions)r:   Úmodulec                   ó0   — e Zd ZU dZeed<   eed<   eed<   y)ÚCacheDeletionCountsz>Simple counters summarizing cache deletions for CLI messaging.Ú
repo_countÚpartial_revision_countÚtotal_revision_countN)r'   r(   r)   Ú__doc__Úintr,   r/   r0   r1   rE   rE   Q   s   … áHàƒOØÓØÔr0   rE   Ú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$   rE   )rK   rF   Útotal_revisionsÚrevisions_in_full_reposÚrepor$   rG   s          r1   Úsummarize_deletionsrS   ^   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ÐSr0   Úrevision_countÚincomplete_countc                 ó€   — g }| r|j                  | › d�«       |r|j                  |› d�«       dj                  |«      S )zMBuild the human-readable summary of what `hf cache prune` is about to delete.z unreferenced revision(s)z incomplete download(s)ú and )ÚappendÚjoin)rT   rU   Úpartss      r1   Ú_prune_summaryr[   p   sG   € à€EÙØ�‰˜Ð'Ð'@ÐAÔBÙØ�‰Ð(Ð)Ð)@ÐAÔBØ�<‰<˜ÓÐr0   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©rR   s    r1   ú<lambda>z0print_cache_selected_revisions.<locals>.<lambda>|   s   € À$Ç.Á.ÐRV×R^ÑR^×RdÑRdÓRfÐAg€ r0   ©Úkeyú/c                 ó   — | j                   S r^   ©Úcommit_hash©Úrevs    r1   rd   z0print_cache_selected_revisions.<locals>.<lambda>~   ó
   € À3Ç?Á?€ r0   ú  - z (entire repo)ú:ú z
(detached)z      z [z] N)ÚsortedÚkeysr`   ra   rO   r$   r   ÚtextrY   r8   rj   Úsize_on_disk_str)rK   rR   Úrepo_keyr$   Úrevisionr8   s         r1   Úprint_cache_selected_revisionsrw   z   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ñ	[ñ
[r0   Ú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_idrb   r$   rj   )rx   Úrepo_lookupÚrevision_lookuprR   ru   rv   s         r1   Úbuild_cache_indexr~   ‰   s�   € ð .0€KØLN€OØ×#Ñ#ò MˆØ—=‘=×&Ñ&Ó(ˆØ $ˆ�HÑØŸ™ò 	MˆHØ=AÀ8Ð<LˆO˜H×0Ñ0×6Ñ6Ó8Ò9ñ	MðMð
 ˜Ð'Ð'r0   Ú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.rg   )Ú
startswithr   Úis_repor
   rv   Úpath_in_repor:   Úid)r   Úuris     r1   Ú_repo_cache_id_from_targetr†   š   si   € à×Ñ˜WÔ%Øˆä
�vÓ
€CØ�;Š;ÜÐSÓTÐTØ
‡|�|Ð 3×#3Ò#3ÜÐ[Ó\Ð\Ø�h‰hˆZ�q˜Ÿ™˜Ð!Ð!r0   Ú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 r^   r_   rc   s    r1   rd   z'collect_cache_entries.<locals>.<lambda>­   s   € ÀÇÁÐQU×Q]ÑQ]×QcÑQcÓQeÐ@f€ r0   re   c                 ó   — | j                   S r^   ri   rk   s    r1   rd   z'collect_cache_entries.<locals>.<lambda>±   rm   r0   Nc                 óN   — | d   j                   | d   �| d   j                  fS dfS )Nr   r   Ú )r{   rj   ©Úentrys    r1   rd   z'collect_cache_entries.<locals>.<lambda>·   s6   € Ø�a‘×!Ñ!Ø(-¨a©Ð(<��a‘×$Ñ$ð€ àBDð€ r0   c                 ó    — | d   j                   S )Nr   )r{   r�   s    r1   rd   z'collect_cache_entries.<locals>.<lambda>½   s   €  u¨Q¡x×'8Ñ'8€ r0   )rq   rz   r*   r$   r8   rX   Úsort)rx   r‡   ÚentriesÚrepo_refs_mapÚsorted_reposrR   rv   Úrefs           r1   Ú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'.rf   ÚopÚvaluezUnsupported operator 'z' in filter 'ú'. Must be one of ú.zUnsupported filter key 'ú' in 'r9   c                 óZ   •— t        |�|j                  ‰‰«      S | j                  ‰‰«      S r^   )Ú_compare_numericÚsize_on_disk)rR   rv   Ú_r˜   Úsize_thresholds      €€r1   rd   z&compile_cache_filter.<locals>.<lambda>Õ   s7   ø€ Ô)9Ø%-Ð%9ˆH×!Ñ!ØØó*
€ Ø?C×?PÑ?PØØó*
€ r0   >   r;   r<   rR   rv   NÚnowrL   c                 ó€   •— ‰dk(  r| j                   n|�|j                  n| j                  }|€yt        ||z
  ‰‰«      S )Nr;   F)Úlast_accessedÚlast_modifiedrž   )rR   rv   r¢   Ú	timestamprf   r˜   Úsecondss       €€€r1   Ú_time_filterz*compile_cache_filter.<locals>._time_filterÞ   sW   ø€ ð ˜*Ò$ð ×"Ò"ð Ð'ð ×+Ò+à×'Ñ'ð ð Ð ØÜ# C¨)¡O°R¸ÓAÐAr0   r:   r3   z/Only '=' is supported for 'type' filters. Got 'r    c                 ó>   •— | j                   j                  «       ‰k(  S r^   )r`   rb   )rR   rv   r    Úexpecteds      €r1   Ú_type_filterz*compile_cache_filter.<locals>._type_filterò   s   ø€ Ø—>‘>×'Ñ'Ó)¨XÑ5Ð5r0   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 r^   )r8   Úgetr*   rb   )rR   rv   r    r8   r”   r’   Ú	value_raws        €€r1   Ú_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Úgrouprb   Ú_ALLOWED_OPERATORSÚlistÚ_FILTER_KEYSr   r   r   r   ÚfloatÚbool)r–   r’   r±   r¨   r«   r¯   rª   rf   r˜   r§   r¡   r®   s    `    @@@@@@r1   Ú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ð Ðr0   Úleftr˜   Úrightc                 ól   — | €y| |k(  | |k7  | |kD  | |k  | |k\  | |k  dœ}||vrt        d|› �«      ‚||   S )z)Evaluate numeric comparisons for filters.F)r3   r5   r4   r2   r7   r6   z)Unsupported numeric comparison operator: )r³   )r»   r˜   r¼   Úcomparisonss       r1   rž   rž     sd   € à€|Øð �U‰]Ø�e‰mØ�E‰\Ø�E‰\Ø�e‰mØ�e‰mñ€Kð 
�ÑÜÐDÀRÀDÐIÓJÐJà�r‰?Ðr0   Ú	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'.rf   ÚorderzUnsupported sort key 'rœ   rš   r›   r>   rŽ   rL   .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=   r9   r;   g        r<   zUnsupported sort key: )r{   rb   rŸ   r¤   r¥   r³   )rŽ   rR   rv   r™   rf   s       €r1   Ú	_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Ð8r0   )Ú_SORT_PATTERNr±   r²   rb   r³   r´   Ú
_SORT_KEYSr¶   Ú_SORT_DEFAULT_ORDERÚ
CacheEntryr.   r	   )r¿   r±   Úexplicit_orderrÁ   ÚreverserÃ   rf   s         @r1   Ú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ÐÐr0   Ú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&   )r~   r   Úsetr²   rb   ÚreÚ	fullmatchr­   rX   Úaddrj   r†   r$   rN   r*   r#   r.   )rx   rË   r|   r}   r%   r$   r&   Ú
raw_targetr   Úloweredr±   rR   rv   Úmatched_repoÚrevsÚfrozen_selecteds                   r1   Ú_resolve_deletion_targetsrÖ   L  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                 ó6  — 	 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�«      «       |jD                  }|r9t/        jF                  dt9        |«      › dtC        |jH                  «      › 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   )rf   rÉ   z&Limit must be a positive integer, got r›   )r„   ra   r`   rv   Úsnapshot_pathr9   r¥   r8   )r„   rv   r9   r¥   r8   rv   r9   r¼   )ÚheadersÚid_keyÚ
alignmentsrŒ   )r„   ra   r`   r9   r¤   r¥   r8   )r„   r9   r¤   r¥   r8   r„   c              3   ó,   K  — | ]  \  }}|€Œ	d–— Œ y ­w)Nr   r/   ©Ú.0r    rl   s      r1   ú	<genexpr>zls.<locals>.<genexpr>ó  s   è ø€ Ò L¡v q¨#¸C¹O¤Ñ Lùs   ‚
�c              3   ó@   K  — | ]  \  }}|€Œ	|j                   –— Œ y ­wr^   ©rŸ   râ   s      r1   rä   zls.<locals>.<genexpr>ô  s   è ø€ ÒW±&°!°SÀsÁ˜S×-Õ-ÑWùs   ‚
�c              3   óF   K  — | ]  }t        |j                  «      –— Œ y ­wr^   )rO   r$   ©rã   rR   s     r1   rä   zls.<locals>.<genexpr>ö  s   è ø€ Ò N¸¤ T§^¡^×!4Ñ Nùs   ‚!c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr^   ræ   rè   s     r1   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.zFound z" incomplete download(s) totalling z$. Remove them with 'hf cache prune'.)%r   r   r
   rØ   r•   rº   r³   ÚclickÚBadParameterr+   ÚtimerÊ   r™   r�   r{   ra   r`   rj   rÝ   rt   Úlast_modified_strrq   r8   r   ÚtableÚlast_accessed_strr­   r*   rO   Úsumrs   r   Úboldr   Úincomplete_filesÚhintÚincomplete_size_on_disk)rØ   r$   rÙ   r�   rÚ   rx   ÚexcÚfiltersr‘   r’   r–   Ú
filter_fnsr¢   ÚfnrŽ   Úsort_key_fnrÉ   rR   rv   rN   r    Úunique_reposrF   rT   Ú
total_sizeró   s                             r1   Úlsrý   x  s¯  € ð^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°ð<óô	
ð %×5Ñ5ÐÙÜ�‰Ø”SÐ)Ó*Ð+Ð+MÜ˜M×AÑAÓBÐCð D1ð1õ	
ð øôo ò OÜÐ4°S·]±]°OÐDÓEÈ3ÐNûðOüò UøÜò 4Ü× Ñ ¤ S£Ó*°Ð3ûð4üò
 Nøô ò 	8Ü×$Ñ$¤S¨£XÓ.°CÐ7ûð	8üó
ùó*
ùó( 5sv   ‚K5 ¤L$ ¨L»L$ ÁMÁ0MÁ;+M ÃA9N	Å1A5NÈNË5	LË>LÌLÌL$ Ì$	MÌ-MÍMÍ	NÍ"NÎN)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           	      óL  — 	 t        |«      }t	        || «      }|j
                  r:dj                  d„ |j
                  D «       «      }t        j                  d|› �«       t        |j                  «      dk(  r5t        j                  d«       t        j                  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�«       t1        |j$                  «       |r9t        j2                  dd|	j&                  |	j,                  |j.                  ¬«       yt        j4                  d|¬«       |j7                  «        t#        |j$                  «      }	t        j2                  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©rn   Nr/   )rã   rŽ   s     r1   rä   zrm.<locals>.<genexpr>6  s   è ø€ ÒK¨u˜d 5 'œNÑKùó   ‚zCould not find in cache:
r   zNothing to delete.©Úcodez repo(s)z revision(s)rW   úAbout to delete z totalling r›   úDry run: no files were deleted.T)rÿ   rz   r$   r9   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&   rY   r   ÚwarningrO   r$   rs   rë   Ú
exceptionsÚExitÚdelete_revisionsrq   rS   r%   rF   rX   rG   rH   Úexpected_freed_size_strrw   ÚresultÚconfirmÚexecute)rË   rØ   rþ   rÿ   rx   rö   Ú
resolutionÚdetailsÚstrategyÚcountsÚsummary_partsÚsummary_texts               r1   Úrmr    sV  € ðLOÜ& yÓ1ˆô +¨=¸'ÓB€Jà×ÒØ—)‘)ÑK¸
×8JÑ8JÔKÓKˆÜ�‰Ð0°°	Ð:Ô;ä
ˆ:×ÑÓ  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   ‚I< É<	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 «       «       Œ@ |j                  }	t        |«      dk(  r|	st        j                  d«       y |j                  t        |«      Ž }
t        |«      }|
j                   |j"                  z   }t%        |j&                  t        |	«      «      }t        j                  d|› dt)        |«      › d	�«       t+        |«       |r7t        j,                  d
d|j&                  t        |	«      t)        |«      ¬«       yt        j.                  d|¬«       |
j1                  «        |	D ]  }	 |j2                  j5                  «        Œ t        j,                  d|› dt)        |«      › d�|j&                  t        |	«      t)        |«      ¬«       y# t        $ r}t        d|j                  › �«      |‚d}~ww xY w# t6        $ r Y Œ›t8        $ r/}t        j:                  d|j2                  › d|› �«       Y d}~ŒÍd}~ww xY w)zBRemove detached revisions and incomplete downloads from the cache.rÜ   Nc              3   óR   K  — | ]  }t        |j                  «      d k(  sŒ|–— Œ! y­w)r   N)rO   r8   ©rã   rv   s     r1   rä   zprune.<locals>.<genexpr>ƒ  s!   è ø€ Ò`¨(ÌÈHÏMÉMÓHZÐ^_ÓH_œXÑ`ùs   ‚' 'c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr^   ri   r  s     r1   rä   zprune.<locals>.<genexpr>‡  s   è ø€ ÒG°(˜×-Õ-ÑGùrê   r   zJNo unreferenced revisions or incomplete downloads found. Nothing to prune.r  ú (z total).r  T)rÿ   r$   Ú
incompleter9   zProceed?r	  z!Could not delete incomplete file z: r
  z; freed r›   )r  Úincomplete_deletedr  )r   r   r
   rØ   rÍ   rz   r*   r$   Úupdateró   rO   r   rs   r  rq   rS   Úexpected_freed_sizerõ   r[   rH   r   rw   r  r  r  Ú	file_pathÚunlinkÚFileNotFoundErrorÚOSErrorr  )rØ   rþ   rÿ   rx   rö   r%   r$   rR   Údetachedró   r  r  Útotal_freedÚsummaryÚincomplete_files                  r1   Úpruner.  c  sA  € ð0OÜ& yÓ1ˆð EG€HÜ›%€IØ×#Ñ#ò HˆÜÑ`°d·n±nÔ`Ó`ˆÙØØ!ˆ�‰Ø×ÑÑG¸hÔGÕGðHð %×5Ñ5Ðä
ˆ9ƒ~˜ÒÑ#3Ü�‰Ð]Ô^Øà-ˆ}×-Ñ-¬v°iÓ/@ÐA€HÜ  Ó*€FØ×.Ñ.°×1VÑ1VÑV€Kä˜V×8Ñ8¼#Ð>NÓ:OÓP€GÜ‡H�HÐ ˜y¨¬<¸Ó+DÐ*EÀXÐNÔOÜ" 8Ô,áÜ�
‰
Ø-ØØ×1Ñ1ÜÐ+Ó,Ü˜kÓ*õ	
ð 	ä‡K�K�
 Õ$à×ÑÔØ+ò `ˆð	`Ø×%Ñ%×,Ñ,Õ.ð`ô ‡J�JØ
�7�)˜8¤L°Ó$=Ð#>¸aÐ@Ø ×5Ñ5ÜÐ/Ó0Ü˜;Ó'ö	øô] ò OÜÐ4°S·]±]°OÐDÓEÈ3ÐNûðOûôT !ò 	ÙÜò 	`Ü�K‰KÐ;¸O×<UÑ<UÐ;VÐVXÐY\ÐX]Ð^×_Ñ_ûð	`ús5   ‚G+ Æ	HÇ+	HÇ4HÈHÈ	IÈ IÈ(%IÉI)zhf cache verify gpt2z)hf cache verify gpt2 --revision refs/pr/1z.hf cache verify my-dataset --repo-type datasetra   r`   rv   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           
      óà  — |�7|�5t        j                  d«       t        j                  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  rUt        j                  d| › d|j                  › d|› d|	j$                  › �«       t        j                  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  )r2  r™   )ra   r`   rv   r/  rØ   r2  r   r  c           
   3   óP   K  — | ]  }d |d   › d|d   › d|d   › d|d   › �–— Œ  y­w)	rn   Úpathz: expected rª   r!  Ú	algorithmz), got ÚactualNr/   )rã   Úms     r1   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     r1   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     r1   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.)ra   r`   Úcheckedr5  )r   Úerrorrë   r  r  r   Úverify_repo_checksumsÚhasattrr™   r+   Ú
mismatchesrY   rs   Úmissing_pathsr  rO   Úextra_pathsÚverified_pathrv   r  Úchecked_count)ra   r`   rv   rØ   r/  r0  r1  r2  Úapir  Ú	exit_coder  Úverified_locations                r1   ÚverifyrI  ³  sM  € ð` Ð Ð!6Ü�	‰	ÐWÔXÜ×Ñ×#Ñ#¨Ð#Ó+Ð+ä
˜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|Ð}ô	
ô ×Ñ×#Ñ#¨Ð#Ó3Ð3ä‡J�JØ
�F×(Ñ(Ð)¨°y·±Ð6GÀrÈ'ÈÐRiÐjØØ—/‘/Ø×$Ñ$ÜÐ"Ó#ör0   )NFNNN)NFF)SrI   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   Ú
_frameworkr   r   Ú_outputr   Ú	cache_clir#   Úcompiler°   rµ   r·   rÅ   rÄ   rÆ   Ú_sort_options_dictrq   rf   r+   r'   rB   rE   r.   rÇ   r-   r*   ÚRepoRefsMaprS   rJ   r[   rw   r~   r†   r¹   r¶   r•   r¸   rº   rž   rÊ   rÖ   Úcommandrý   r  r.  ÚmodelrI  r/   r0   r1   ú<module>r[     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ð$ 3ð ¸#ð À#ó ð[°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
ØØˆd‰
ÙØLô	
ð	ñðD
ð ØÙØVô	
ð	ñðD
ð ØˆS‰	�DÑÙØØØmô	
ð	ñðD
ð* Ø�dÑÙð7ô	
ð	ñð+D
ð< Øˆd‰
ÙØfô	
ð	ñð=D
ðH 
òID
óðD
ðN ×Ñòð ó ð* 	ð 	ð 	ñ5OØØˆS‰	ÙØ|ô	
ð	ñðOð Øˆd‰
ÙØLô	
ð	ñðOð 
ØÙØØØ,ô	
ð	ñ
ðOð* ØÙØ?ô	
ð	ñð+Oð6 
ò7OóðOðd ×ÑÐ-Ð/IÐJÐÓKð 	ð 	ð 	ñ)LØØˆd‰
ÙØLô	
ð	ñðLð 
ØÙØØØ,ô	
ð	ñ
ðLð ØÙØ?ô	
ð	ñðLð* 
ò+Ló LðLð^ ×Ñòð ó ð )×.Ñ.Ø ð 	ð 	ð 	ð 	Øñ=fØðfàðfð ðfð Øˆd‰
ÙØkô	
ð	ñð	fð Øˆd‰
ÙØRô	
ð	ñðfð  %ØÙØ%ØRô	
ð	ñð!fð. #ØÙØ#Ø_ô	
ð	ñð/fð< ð=fð> 
ò?fóñfr0   