
    wi!                         d Z ddlZddlmZmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZ dd	lmZmZmZ  G d
 de          Zddde	dedefdZdS )zContains command to scan the HF cache directory.

Usage:
    huggingface-cli scan-cache
    huggingface-cli scan-cache -v
    huggingface-cli scan-cache -vvv
    huggingface-cli scan-cache --dir ~/.cache/huggingface/hub
    N)	Namespace_SubParsersAction)Optional   )CacheNotFoundHFCacheInfoscan_cache_dir   )BaseHuggingfaceCLICommand)ANSIshow_deprecation_warningtabulatec                   P    e Zd Zedefd            ZdeddfdZd Zde	ddfd	Z
dS )
ScanCacheCommandparserc                     |                      dd          }|                    dt          d d           |                    ddd	d
d           |                    t                     d S )Nz
scan-cachezScan cache directory.)helpz--dirzMcache directory to scan (optional). Default to the default HuggingFace cache.)typedefaultr   z-vz	--verbosecountr   zshow a more verbose output)actionr   r   )func)
add_parseradd_argumentstrset_defaultsr   )r   scan_cache_parsers     {/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/huggingface_hub/commands/scan_cache.pyregister_subcommandz$ScanCacheCommand.register_subcommand"   s    "--lAX-YY&&`	 	' 	
 	
 	
 	&&- 	' 	
 	
 	
 	&&,<&=====    argsreturnNc                 6    |j         | _        |j        | _        d S N)verbose	verbositydir	cache_dir)selfr!   s     r   __init__zScanCacheCommand.__init__5   s    "l(,r    c           
      H   t          dd           	 t          j                    }t          | j                  }t          j                    }n1# t          $ r$}|j        }t          d|            Y d }~d S d }~ww xY w|                     |           t          dt          ||z
  d           dt          |j	                   dt          j        |j                   d           t          |j                  d	k    rd
t          |j                   d}| j        dk    r[t          t          j        |                     |j        D ]0}t          t          j        t!          |                               1d S t          t          j        |dz                        d S d S )Nzhuggingface-cli scan-cachezhf cache scanzCache directory not found: z	
Done in r
   zs. Scanned z repo(s) for a total of .r   zGot z warning(s) while scanning.   z Use -vvv to print details.)r   timer	   r(   r   print_print_hf_cache_info_as_tableroundlenreposr   redsize_on_disk_strwarningsr&   grayr   )r)   t0hf_cache_infot1excr(   messagewarnings           r   runzScanCacheCommand.run9   s    !=OOO	B*4>::MBB 	 	 	I;	;;<<<FFFFF	
 	**=999KrBw** K Ks=;N7O7O K K#x(FGGK K K	
 	
 	
 }%&&**US!788UUUG~""di(())),5 3 3G$)CLL1122223 3 di*G GHHIIIII +*s   :A 
A;A66A;r9   c                 L    t          t          || j                             d S )Nr&   )r/   	get_tabler&   )r)   r9   s     r   r0   z.ScanCacheCommand._print_hf_cache_info_as_tableT   s%    i@@@AAAAAr    )__name__
__module____qualname__staticmethodr   r   r   r*   r>   r   r0    r    r   r   r   !   s        >$5 > > > \>$1Y 14 1 1 1 1J J J6B; B4 B B B B B Br    r   r@   r9   r&   r"   c                    |dk    r2t          d t          | j        d           D             g d          S t          d t          | j        d           D             g d	          S )
a:  Generate a table from the [`HFCacheInfo`] object.

    Pass `verbosity=0` to get a table with a single row per repo, with columns
    "repo_id", "repo_type", "size_on_disk", "nb_files", "last_accessed", "last_modified", "refs", "local_path".

    Pass `verbosity=1` to get a table with a row per repo and revision (thus multiple rows can appear for a single repo), with columns
    "repo_id", "repo_type", "revision", "size_on_disk", "nb_files", "last_modified", "refs", "local_path".

    Example:
    ```py
    >>> from huggingface_hub.utils import scan_cache_dir
    >>> from huggingface_hub.commands.scan_cache import get_table

    >>> hf_cache_info = scan_cache_dir()
    HFCacheInfo(...)

    >>> print(get_table(hf_cache_info, verbosity=0))
    REPO ID                                             REPO TYPE SIZE ON DISK NB FILES LAST_ACCESSED LAST_MODIFIED REFS LOCAL PATH
    --------------------------------------------------- --------- ------------ -------- ------------- ------------- ---- --------------------------------------------------------------------------------------------------
    roberta-base                                        model             2.7M        5 1 day ago     1 week ago    main C:\Users\admin\.cache\huggingface\hub\models--roberta-base
    suno/bark                                           model             8.8K        1 1 week ago    1 week ago    main C:\Users\admin\.cache\huggingface\hub\models--suno--bark
    t5-base                                             model           893.8M        4 4 days ago    7 months ago  main C:\Users\admin\.cache\huggingface\hub\models--t5-base
    t5-large                                            model             3.0G        4 5 weeks ago   5 months ago  main C:\Users\admin\.cache\huggingface\hub\models--t5-large

    >>> print(get_table(hf_cache_info, verbosity=1))
    REPO ID                                             REPO TYPE REVISION                                 SIZE ON DISK NB FILES LAST_MODIFIED REFS LOCAL PATH
    --------------------------------------------------- --------- ---------------------------------------- ------------ -------- ------------- ---- -----------------------------------------------------------------------------------------------------------------------------------------------------
    roberta-base                                        model     e2da8e2f811d1448a5b465c236feacd80ffbac7b         2.7M        5 1 week ago    main C:\Users\admin\.cache\huggingface\hub\models--roberta-base\snapshots\e2da8e2f811d1448a5b465c236feacd80ffbac7b
    suno/bark                                           model     70a8a7d34168586dc5d028fa9666aceade177992         8.8K        1 1 week ago    main C:\Users\admin\.cache\huggingface\hub\models--suno--bark\snapshots\70a8a7d34168586dc5d028fa9666aceade177992
    t5-base                                             model     a9723ea7f1b39c1eae772870f3b547bf6ef7e6c1       893.8M        4 7 months ago  main C:\Users\admin\.cache\huggingface\hub\models--t5-base\snapshots\a9723ea7f1b39c1eae772870f3b547bf6ef7e6c1
    t5-large                                            model     150ebc2c4b72291e770f58e6057481c8d2ed331a         3.0G        4 5 months ago  main C:\Users\admin\.cache\huggingface\hub\models--t5-large\snapshots\150ebc2c4b72291e770f58e6057481c8d2ed331a                                                 ```
    ```

    Args:
        hf_cache_info ([`HFCacheInfo`]):
            The HFCacheInfo object to print.
        verbosity (`int`, *optional*):
            The verbosity level. Defaults to 0.

    Returns:
        `str`: The table as a string.
    r   c                     g | ]t}|j         |j        d                     |j                  |j        |j        |j        d                    t          |j	                            t          |j                  guS ){:>12}, )repo_id	repo_typeformatr5   nb_fileslast_accessed_strlast_modified_strjoinsortedrefsr   	repo_path).0repos     r   
<listcomp>zget_table.<locals>.<listcomp>   s         LNOOD$9::M**IIfTY//00''	  r    c                     | j         S r$   rT   rV   s    r   <lambda>zget_table.<locals>.<lambda>        r    key)REPO ID	REPO TYPESIZE ON DISKNB FILESLAST_ACCESSEDLAST_MODIFIEDREFS
LOCAL PATH)rowsheadersc                 &   g | ]}t          |j        d            D ]t}|j        |j        |j        d                    |j                  |j        |j        d	                    t          |j
                            t          |j                  guS )c                     | j         S r$   )commit_hash)revisions    r   r[   z&get_table.<locals>.<listcomp>.<lambda>   s	    HL` r    r]   rI   rJ   )rR   	revisionsrK   rL   rk   rM   r5   rN   rP   rQ   rS   r   snapshot_path)rU   rV   rl   s      r   rW   zget_table.<locals>.<listcomp>   s         &t~;`;` a a a   LN(OOH$=>>%.IIfX]3344.//	   r    c                     | j         S r$   rY   rZ   s    r   r[   zget_table.<locals>.<lambda>   r\   r    )r_   r`   REVISIONra   rb   rd   re   rf   )r   rR   r3   )r9   r&   s     r   rA   rA   X   s    V A~~  #=#6<W<WXXX  	 	 	
 
 
 	
4   #=#6<W<WXXX  	 	 	
 
 
 	
r    )__doc__r.   argparser   r   typingr   utilsr   r   r	    r   
_cli_utilsr   r   r   r   intr   rA   rF   r    r   <module>rx      s     1 1 1 1 1 1 1 1       > > > > > > > > > > ' ' ' ' ' ' @ @ @ @ @ @ @ @ @ @4B 4B 4B 4B 4B0 4B 4B 4Bn ?@ _
 _
 _
[ _
 _
C _
 _
 _
 _
 _
 _
r    