o
    vqiO                     @   s   d Z ddlZddlZddlZddlZddlm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mZmZmZ dd	lmZmZ d
gZG dd dejZdd ZejdeddZej e dZ!dd Z"dd
 Z#e$dkr|e#  dS dS )u\   
命令行

Authors: xiangyiqing(xiangyiqing@baidu.com),suoyi@baidu.com
Date:    2024/03/05
    N)log)pipeline)model_file_downloadfile_download)snapshot_download)convert_patterns)DEFAULT_MAX_WORKERSREPO_TYPE_SUPPORTREPO_TYPE_MODELDEFAULT_DATASET_REVISIONREPO_TYPE_DATASET)upload_fileupload_foldermainc                   @   s   e Zd ZdZdS )CustomHelpFormatteru%   
    自定义帮助信息格式
    N)__name__
__module____qualname____doc__ r   r   [/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/aistudio_sdk/cmdline.pyr       s    r   c               	   C   s  t   tjdtd} | jddd}|jddd}|jd	d
tdddd |jddtddg ddd |jddd}| }|jddd}|jddtdddd |jddtddd  |jd!d"tdd#d  |jd$d%tdd&g d'd(d |jd)d*tdd+d+gd,d |jd-d.t	dd/g d0d1d |jd2d3tdd4d4d5gd6d |jd7d8d9t	dg d:d; |jd<d=d}|jd>td?dd@dA |jddtdddBd |jdCdDtdddEd |jdFdGd}| }|jddGd}	|	jdHtd@dI |	jdJdKdLdMdN |jddOd}
|
jdPtdQdI |
jdddRdS}|jdTdUd}|jdVtd?ddWdA |jdXdYd}|jdZtd[dI |jd\td]dI d^d_d`dadbdcdddedf}|jdgdhtdi}djdk
dldm | D  }|jdnd}|jdodptdi}|jddtddqd  |jdJdrtddsdtdu |jddvdLdwdN |jddxt	dt| dy|dz |jd)d{tdd|d  |jd}d~tdi}|jddt	ddd  |jdJdrtddsdtdu |jddtdi}|jdtddI |jdtddI |jdtddd |jdtddd |jdtdddd |jdddtdd |jddtddd |jd
tddd |jdt	tdd |jddtdi}|jdtddI |jd\td?dddA |jdtd?dddA |jdttdd |jddtdd |jddtdd |jdtddd |jd
tddd |jdt	tdt d dd | S )u   
    构建CLI Parser
    ZPROG)progformatter_classzAI Studio CLI SDKcommand)helpdestconfigu   首次使用AI Studio CLI管理任务时, 需要先使用AI Studio账号的访问令牌进行身份认证。            一次认证后，再次使用时无需认证。)r   z-tz--tokenF u   AI Studio账号的访问令牌)typerequireddefaultr   z-lz--log)infodebugr   u   日志级别)r   r   r    choicesr   submitu   提交SDK产线任务jobz-nz--nameTsummit_nameu   产线任务名称)r   r   r   r   z-pz--pathuE   代码包本地路径(文件夹)，要求文件总体积不超过50MB)r   r   r   z-cz--cmdu   任务启动命令z-ez--envpaddle2.6_py3.10)zpaddle2.4_py3.7zpaddle2.5_py3.10r'   zpaddle3.0_py3.10u*   飞桨框架版本, 默认paddle2.6_py3.10z-dz--deviceZv100u   硬件资源, 默认v100z-gz--gpus1)         u   gpu数量, 默认单卡z-payz	--paymentZacoinZcouponu?   计费方式: * acoin-A币 * coupon-算力点. 默认使用A币z-mz--mount_datasetappendu-   数据集挂载, 单个任务最多挂载3个)actionr   r   r    r   jobsu   查询SDK产线任务query_pipeline_id?u   产线id)r   nargsr    r   u   产线名称z-sz--statusu   状态stopu   停止SDK产线任务stop_pipeline_id)r   r   z-fz--force
store_trueu!   强制停止，无需二次确认)r-   r   u   管理SDK产线任务Zjob_idu   任务IDu   job子命令)r   r   r   Zlsu4   查询某个 job 的 output 目录下文件夹内容	directoryu   输出目录路径cpu7   下载某个 job 的 output 目录下的文件到本地result_fileu   结果文件路径
local_pathu   本地保存路径u   公共领域 (CC0)u   署名 (CC BY 4.0)u>   署名-非商业性使用-相同方式共享 (CC BY-NC-SA 4.0)u(   署名-相同方式共享 (CC BY-SA 4.0)u   署名-禁止演绎 (CC-BY-ND)u   自由软件基金会 (GPL 2)u   署名-允许演绎 (ODC-BY)u   其他)r)         r*            r+   datasetu?   管理数据集，此命令不在支持，请使用新的命令)r   r   uo   数据集许可协议的ID，仅在设置public后生效。默认为1 (公共领域 CC0)。
可选项包括：

c                 s   s$    | ]\}}d | d| V  qdS )z  z: Nr   ).0kvr   r   r   	<genexpr>
  s   " zinit.<locals>.<genexpr>u   数据集操作createu   创建数据集u   数据集名称z--files+u'   本地文件路径，支持多个文件)r   r   r1   r   z--publicu   是否公开数据集z	--licenser)   )r   r   r#   r    r   z--descriptionu   数据集描述addu   上传数据集文件z-idz--idu   数据集iddownloadu   下载文件z--modelu!   模型ID，例如 myname/myrepoidz	--datasetzkThe id of the dataset to be downloaded. For download, the id of either a model or dataset must be provided.z
--revisionNzRevision of the entity.)r   r    r   z--local_dirzNFile will be downloaded to local location specified bylocal_dir, in this case.files*zmSpecify relative path to the repository file(s) to download.(e.g 'tokenizer.json', 'dir/decoder_model.onnx').)r   r    r1   r   z	--includezEGlob patterns to match files to download.Ignored if file is specified)r1   r    r   r   z	--excludezLGlob patterns to exclude from files to download.Ignored if file is specified)r1   r   r    r   zA User Access Tokenz--max-workersz0The maximum number of workers to download files.uploadu   上传文件repo_idz;The ID of the repo to upload to (e.g. `username/repo-name`)zTOptional, Local path to the file or folder to upload. Defaults to current directory.path_in_repozfOptional, Path of the file or folder in the repo. Defaults to the relative path of the file or folder.z--repo-typezPType of the repo to upload to (e.g. `dataset`, `model`). Defaults to be `model`.)r#   r    r   z'Glob patterns to match files to upload.)r1   r   r   z.Glob patterns to exclude from files to upload.z--commit-messagez,The message of commit. Default to be `None`.r+   r*   z1The number of workers to use for uploading files.)r   Zcli_logargparseArgumentParserr   add_subparsers
add_parseradd_argumentstrintjoinitemslistkeysr   r	   r
   minos	cpu_count)parserZsubparser_aistudior   r$   Zsubparser_submitZ
submit_jobr.   r2   Zsubparser_stopZstop_jobr%   Zsubparser_jobZjob_lsZjob_cpZlicense_mappingr>   Zlicense_helpZdatasets_createrD   rF   rG   rJ   r   r   r   init&   s  		
	
r\   ZAISTUDIO_CACHE_HOMEHOMEr    z/.cache/aistudio/.auth/tokenc                 C   sP   t |  ttd}|t|  W d   n1 sw   Y  ttd dS )z#
    save to separate location
    wNi  )printopen
TOKEN_FILEwriterR   rY   chmod)tokenfr   r   r   
save_token  s
   rg   c                  C   s  t  } tjdd }t|  z| |}W n   Y dS t|dddkr|js,J d|jddks8J d|jdd }|j| _|j	du rVt
j|rV|| _	|| _nM|j	du rht
j|rh|| _	d	| _n;|j	du rutd
| d|jdu rt
j|j	r|j	| _	t
j|j	| _n|jdu r|j	| _	d| _n|j	| _	|j| _t
j| j	rt| j	| j| j|j|j|jd n*t
j| j	rt| j| j	| j|j|jt|jt|j|j|jd	 nt| j	 dtd| j  dS t|drE|jrEt|jdkrt|j|jd |j|j |jd dS t|jdkr-t!|j|j |j|j|j|jd dS t!|j|j |jt|jt|j|j|jd dS t|dr|j"r|j rV|j nt#}t|jdkrqt$|j"|jd |j|t%|jd n-t|jdkrt!|j"||j|j|j|jd nt!|j"||jt|jt|j|j|jd td|j" d dS d|v rt&'| dS d|v rt&(| dS d|v rt&)| dS d|v r|j*st+j,ddd st-.d! dS t-.d" t&/| dS d#|v rt&0| dS d$|v rd%|v rt&1| dS d&|v r$d'|v r$t-2d( t&3| dS d)|v r:d'|v r:t-2d( t&4| dS t-.d* dS )+u	   CLI入口r)   Nr   rJ   z`repo_id` is required/z1repo_id should be in format of username/repo-name.'zD' is not a local file or folder. Please set `local_path` explicitly.r   )Zpath_or_fileobjrL   rK   	repo_typecommit_messagere   )	rK   Zfolder_pathrL   rm   rl   allow_patternsignore_patternsmax_workersre   z is not a valid local pathzFinished uploading to modelr   )	local_dirrevisionre   )rK   rs   rr   rn   rp   re   )rK   rs   rr   rn   ro   rp   re   r>   )rr   rs   rl   re   z&
Successfully Downloaded from dataset z.
re   r&   r/   r3   zDo you want to continue?Fr^   zAborted.z
Confirmed.r5   r7   r8   namerH   z&This command is not supported any moreidu   无效的命令)5r\   sysargvr`   
parse_argsgetattrrK   countsplitr8   rY   pathisfilerL   isdir
ValueErrorbasenamer   rl   rm   re   r   r   includeexcluderp   hasattrrq   lenrH   r   rr   rs   r   r>   r   r   r   r   Z
set_configrD   queryforceclickZconfirmr   r!   r2   Zlist_output_filesZdownload_output_fileerrorZcreate_datasetZadd_file)r[   args	repo_nameZdataset_revisionr   r   r   r     s0  





	
			








__main__)%r   rv   rM   r   rY   Zaistudio_sdkr   Zaistudio_sdk.sdkr   Zaistudio_sdk.file_downloadr   r   Zaistudio_sdk.snapshot_downloadr   Zaistudio_sdk.utils.utilr   Zaistudio_sdk.configr   r	   r
   r   r   Zaistudio_sdk.hubr   r   __all__RawTextHelpFormatterr   r\   getenvZ
cache_homer|   
expanduserrb   rg   r   r   r   r   r   r   <module>   s6      1
 *
