o
    )jt-                     @   s   d dl Z d dlmZ d dlmZ d dlm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mZ d d	lmZmZ d d
lmZ d dlmZ ee jdZdd ZG dd deZdS )    N)ArgumentParser)
CLICommand)concurrent_download)HubApi)DEFAULT_MAX_WORKERSDEFAULT_SKILLS_DIR)dataset_file_downloadmodel_file_download)dataset_snapshot_downloadsnapshot_download)convert_patternsresolve_endpoint)DEFAULT_DATASET_REVISION)
get_logger)Z	log_levelc                 C   s   t | S )z> Function which will be called for a specific sub parser.
    )DownloadCMDargs r   X/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/cli/download.pysubparser_func   s   r   c                   @   s2   e Zd ZdZdd ZedefddZdd Zd	S )
r   downloadc                 C   s
   || _ d S )Nr   )selfr   r   r   r   __init__   s   
zDownloadCMD.__init__parsersc                 C   s(  |  tj}| }|jdtdd |jdtdd |jdtddd	 |jd
tdddd |jdddgddd |jdtddd	 |jdtddd	 |jdtddd	 |jdtddd	 |jdtdddd |jdddtd d! |jd"dtdd#d$ |jd%tdd&d	 |jd'ttd(d	 |jt	d) dS )*z+ define args for download command.
        z--modelziThe id of the model to be downloaded. For download, the id of either a model or dataset must be provided.)typehelpz	--datasetzkThe id of the dataset to be downloaded. For download, the id of either a model or dataset must be provided.z--collectionNz2The ID of the collection to download (skills only))r   defaultr   repo_id?zQOptional, ID of the repo to download, It can also be set by --model or --dataset.)r   nargsr   r   z--repo-typemodeldatasetz4Type of repo to download from (defaults to 'model').)choicesr   r   z--tokenz7Optional. Access token to download controlled entities.z
--revisionz%Revision of the entity (e.g., model).z--cache_dirz-Cache directory to save entity (e.g., model).z--local_dirzsFile will be downloaded to local location specified bylocal_dir, in this case, cache_dir parameter will be ignored.files*znSpecify relative path to the repository file(s) to download.(e.g 'tokenizer.json', 'onnx/decoder_model.onnx').)r   r   r   r   z	--includezEGlob patterns to match files to download.Ignored if file is specified)r   r   r   r   z	--excludezLGlob patterns to exclude from files to download.Ignored if file is specified)r   r   r   r   z
--endpointaD  ModelScope server endpoint, e.g. modelscope.cn or modelscope.ai   Full URL like https://modelscope.cn is also accepted. Scheme (https://) is auto-completed if omitted. Falls back to env MODELSCOPE_DOMAIN, then defaults to https://www.modelscope.cn. When omitted, the CLI auto-detects the correct site (cn/intl) for download.z--max-workersz0The maximum number of workers to download files.)func)

add_parserr   nameadd_mutually_exclusive_groupadd_argumentstrintr   set_defaultsr   )r   parsergroupr   r   r   define_args    s   zDownloadCMD.define_argsc                    s  | j js| j jr%| j jd ur$| j jr| j jd| j j n0| j jg| j _n(| j jd urM| j jdkr8| j j| j _n| j jdkrE| j j| j _ntd| j j | j js]| j js]| j js]td| j j	rht
| j j	nd d }| j jd urtd  j| j jd}| j jrt| j jdkrt| j j| j jd | j j| j j| j j|| j jd	 nFt| j jdkrt| j j| j j| j j| j j| j j| j j|| j jd
	 n"t| j j| j j| j j| j jt| j jt| j j| j j|| j jd
 td| j j d d S | j jry| j jr| j jnt}t| j jdkr*t| j j| j jd | j j| j j||| j jd	 nCt| j jdkrMt| j j|| j j| j j| j j| j j|| j jd
	 n t| j j|| j j| j jt| j jt| j j| j j|| j jd
 td| j j d d S | j jrt| j jd | j jpt j| j jdd}|di dg }t d| j j dt| d |std| j j  d S g }|D ]}|dr|dst!d| q|"| q|std| j j  d S tdt| d  fdd}t#||| j jdd  d S 	 d S )!Nr   r    r!   zNot support repo-type: %sz*Model, dataset, or collection must be set.)endpoint)Zaccess_token   )	cache_dir	local_dirrevisioncookiestokenr0   )r4   r2   r3   allow_file_patternmax_workersr5   r6   r0   )	r4   r2   r3   r7   Zignore_file_patternr8   r5   r6   r0   z$
Successfully Downloaded from model z.
z&
Successfully Downloaded from dataset )r0   r6   Zskill)	repo_typer0   ZCollectionElementsZCollectionElementVoListzCollection z has z
 elements.z'No skill elements found in collection: ElementPathElementNamez)Skipping malformed collection element: %sz-No valid skill elements found in collection: zFound z' skill(s) in collection, downloading...c              
      sn   | d }| d }| d| }z j |d}||d fW S  ty6 } z|d t|fW  Y d }~S d }~ww )Nr:   r;   /)skill_idr3   r0   )Zdownload_skill	Exceptionr*   )elementZelement_pathZelement_namer=   Z	skill_direapir0   r3   r   r   _download_one_skill  s   z0DownloadCMD.execute.<locals>._download_one_skill)r8   Z	item_name)$r   r    r!   r   r#   insertr9   r>   Z
collectionr0   r   r6   r   Zget_cookieslenr	   r2   r3   r4   r   r8   r   includeexcludeprintr   r   r
   r   Zget_collectiongetloggerinfowarningappendr   )r   r5   Zdataset_revisiondataelementsZvalid_elementselemrC   r   rA   r   execute   s*  

	



	




zDownloadCMD.executeN)	__name__
__module____qualname__r'   r   staticmethodr   r/   rQ   r   r   r   r   r      s    _r   )loggingargparser   Zmodelscope.cli.baser   Zmodelscope.cli.utilsr   Zmodelscope.hub.apir   Zmodelscope.hub.constantsr   r   Zmodelscope.hub.file_downloadr   r	   Z modelscope.hub.snapshot_downloadr
   r   Zmodelscope.hub.utils.utilsr   r   Zmodelscope.utils.constantr   Zmodelscope.utils.loggerr   WARNINGrJ   r   r   r   r   r   r   <module>   s   