U
    9%e>                     @   sl   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 de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                   @   sF   e Zd ZeedddZeddddZdd	 Ze	dd
ddZ
dS )ScanCacheCommand)parserc                 C   sD   | j ddd}|jdtd dd |jddd	d
dd |jtd 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   Zscan_cache_parser r   b/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/huggingface_hub/commands/scan_cache.pyregister_subcommand!   s    z$ScanCacheCommand.register_subcommandN)argsreturnc                 C   s   |j | _|j| _d S N)verbose	verbositydir	cache_dir)selfr   r   r   r   __init__4   s    zScanCacheCommand.__init__c              
   C   s  zt   }t| j}t   }W n< tk
rZ } z|j}td|  W Y d S d }~X Y nX | | tdt|| d dt|j dt	
|j d t|jdkrdt|j d	}| jd
krtt	| |jD ]}tt	| qntt	|d  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warningr   r   r   run8   s&    

.

zScanCacheCommand.run)r2   r   c                 C   s   | j dkrDttdd t|jdd dD ddd	d
ddddgd n8ttdd t|jdd dD dddd	d
dddgd d S )Nr   c                 S   sD   g | ]<}|j |jd |j|j|j|jdt|j	t
|jgqS ){:>12}, )repo_id	repo_typeformatr.   nb_filesZlast_accessed_strlast_modified_strjoinsortedrefsr   	repo_path).0repor   r   r   
<listcomp>U   s   
zBScanCacheCommand._print_hf_cache_info_as_table.<locals>.<listcomp>c                 S   s   | j S r   rB   rD   r   r   r   <lambda>`       z@ScanCacheCommand._print_hf_cache_info_as_table.<locals>.<lambda>keyzREPO IDz	REPO TYPEzSIZE ON DISKzNB FILESZLAST_ACCESSEDZLAST_MODIFIEDZREFSz
LOCAL PATH)rowsheadersc                 S   s\   g | ]T}t |jd d dD ]<}|j|j|jd|j|j|jd	t |j
t|jgqqS )c                 S   s   | j S r   )commit_hash)revisionr   r   r   rH   }   rI   zKScanCacheCommand._print_hf_cache_info_as_table.<locals>.<listcomp>.<lambda>rJ   r8   r9   )r@   Z	revisionsr:   r;   rN   r<   r.   r=   r>   r?   rA   r   Zsnapshot_path)rC   rD   rO   r   r   r   rE   q   s    
c                 S   s   | j S r   rF   rG   r   r   r   rH   |   rI   ZREVISION)r    r(   r   r@   r,   )r#   r2   r   r   r   r)   Q   sB    
z.ScanCacheCommand._print_hf_cache_info_as_table)__name__
__module____qualname__staticmethodr   r   r   r$   r7   r   r)   r   r   r   r   r       s
   r   )__doc__r'   argparser   r   typingr   utilsr   r   r    r
   Z
_cli_utilsr   r   r   r   r   r   r   <module>   s   