
    gp!                         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  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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/html/ai-engine/env/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           
         	 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    rNt	          t          j        |                     |j        D ]#}t	          t          j        |                     $d S t	          t          j        |dz                        d S d S )Nz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.)timer	   r'   r   print_print_hf_cache_info_as_tableroundlenreposr   redsize_on_disk_strwarningsr%   gray)r(   t0hf_cache_infot1excr'   messagewarnings           r   runzScanCacheCommand.run9   s   	B*4>::MBB 	 	 	I;	;;<<<FFFFF	
 	**=999Kr"uQ K KC8K4L4L K K#x(FGGK K K	
 	
 	
 }%&&**US!788UUUG~""di(())),5 . .G$)G,,----. . di*G GHHIIIII +*s   := 
A+A&&A+r8   c                 L    t          t          || j                             d S )Nr%   )r.   	get_tabler%   )r(   r8   s     r   r/   z.ScanCacheCommand._print_hf_cache_info_as_tableR   s%    i@@@AAAAAr   )__name__
__module____qualname__staticmethodr   r   r   r)   r=   r   r/    r   r   r   r   !   s        >$5 > > > \>$1Y 14 1 1 1 1J J J2B; B4 B B B B B Br   r   r?   r8   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formatr4   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#   rS   rU   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   rZ   z&get_table.<locals>.<listcomp>.<lambda>   s	    HL` r   r\   rH   rI   )rQ   	revisionsrJ   rK   rj   rL   r4   rM   rO   rP   rR   r   snapshot_path)rT   rU   rk   s      r   rV   zget_table.<locals>.<listcomp>   s         &t~;`;` a a a   LN(OOH$=>>%.IIfX]3344.//	   r   c                     | j         S r#   rX   rY   s    r   rZ   zget_table.<locals>.<lambda>   r[   r   )r^   r_   REVISIONr`   ra   rc   rd   re   )r   rQ   r2   )r8   r%   s     r   r@   r@   V   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   intr   r@   rE   r   r   <module>rw      s     1 1 1 1 1 1 1 1       > > > > > > > > > > ' ' ' ' ' ' & & & & & & & &2B 2B 2B 2B 2B0 2B 2B 2Bj ?@ _
 _
 _
[ _
 _
C _
 _
 _
 _
 _
 _
r   