
    6pj                         S r SSKrSSKrSSKJr  SSKJrJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  \" \R                   S	9rSS
 jr " S S\	5      rg)u<   ``modelscope skills`` — download and install agent skills.    N)ArgumentParser)ThreadPoolExecutoras_completed)
CLICommand)HubApi)DEFAULT_SKILLS_DIR)
get_logger)	log_levelc           
      l   / / pT[        US9 nU Vs0 s H  ovR                  X5      U_M     nn[        U5       Hk  n	U	R                  5       u  pnU(       a(  UR	                  X45        [        SU SU
 SU 35        ME  UR	                  X45        [        SU SU
 SU 35        Mm     SSS5        [        S[        U5       S	[        U5       S
35        U(       aA  [        SU S35        U H  u  p[        SU
 SU 35        M     [        R                  " S5        XE4$ s  snf ! , (       d  f       N= f)zRun ``download_fn`` over ``items`` in parallel, reporting progress.

``download_fn`` must return ``(identifier, result_path, error_or_None)``.
On any failure the process exits with status 1 after the summary is
printed.
)max_workerszFailed to download  : zDownloaded z -> Nz
Download complete: z succeeded, z failedzFailed zs:z     )	r   submitr   resultappendprintlensysexit)download_fnitemsr   	item_name	succeededfailedexecutoritemfuturesfuture
identifierresult_patherrors                Q/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/modelscope/cli/skills.py_concurrent_downloadr$      s4    Bv		4HMN??;5t;N"7+F-3]]_*JUz12+I;a
|2eWMN  *!:;I;a
|4}MN , 
5 
!#i.!1[M" #	{"%&!'JBzl"UG,- "(# O 
5	4s   D%D A<D% D%%
D3c                   >    \ rS rSrSrSr\S\SS4S j5       rS r	S	r
g)
	SkillsCMD/   zCommand for managing skills.skills
subparsersreturnNc                 V   U R                  [        R                  SS9nUR                  SSS9nUR                  SSS9nUR	                  S[
        S	S
S9  UR	                  S[
        S SS9  UR	                  S[
        S SS9  UR	                  S[        SSS9  UR                  [        S9  g )Nz!Download and manage agent skills.)helpskills_actionzskills subcommands)destr,   addzDownload and install skills	skill_ids+z/Skill IDs to download, in format: <path>/<name>)typenargsr,   z--tokenzAccess token for authentication)r2   defaultr,   z--local_dirz7Target directory for skills (default: ~/.agents/skills)z--max-workers   z)Maximum concurrent downloads (default: 8))_command)
add_parserr&   nameadd_subparsersadd_argumentstrintset_defaults)r)   parsersubr7   s       r#   registerSkillsCMD.register4   s    &&NN!D ' F## '; $ = ^^E0M^N
B	 	  	D
 	2	 	  	4
 	J	 	  	L
 	<	 	  	> 	Y/    c                   ^^ [        U R                  SS 5      (       d  [        S5        g [        U R                  SS 5      nU(       d  [        S5        g [        U R                  R                  S9mU R                  R
                  =(       d    [        m[        S[        U5       S35        [        U5      S:X  a#   TR                  US	   TS
9n[        SU 35        g UU4S jn[        UUU R                  R                  SS9  g ! [         a4  n[        SUS	    SU 35        [        R                  " S5         S nAg S nAff = f)Nr-   z8Usage: modelscope skills add <skill_id1> <skill_id2> ...r0   zONo skill IDs provided. Usage: modelscope skills add <skill_id1> <skill_id2> ...)tokenzDownloading z skill(s)...r   r   skill_id	local_dirzSkill downloaded to: zFailed to download skill r   c                 x   >  TR                  U TS9nXS 4$ ! [         a  nU S [        U5      4s S nA$ S nAff = f)NrE   )download_skill	Exceptionr;   )rF   	skill_direapirG   s      r#   _download_one(SkillsCMD.execute.<locals>._download_onem   sO    4 # 2 2!)Y !3 !@I$66  4$dCF334s    
9499skill)r   r   )getattrargsr   r   rD   rG   r   r   rI   rJ   r   r   r$   r   )selfr0   rK   rL   rN   rM   rG   s        @@r#   executeSkillsCMD.executeS   s"   tyy/488LMDII{D9	 0 1499??+II''=+=	S^,L9:y>Q..&q\Y / @	-i[9:4 ! II11!	#  1)A,r!EFs   =!D 
E*E  E )__name__
__module____qualname____firstlineno____doc__r8   staticmethodr   r@   rT   __static_attributes__rV   rB   r#   r&   r&   /   s/    &D0^ 0 0 0<&#rB   r&   )r5   r   )r[   loggingr   argparser   concurrent.futuresr   r   modelscope_hub.cli.baser   modelscope.hub.apir   modelscope.hub.constantsr   modelscope.utils.loggerr	   WARNINGloggerr$   r&   rV   rB   r#   <module>rg      sA    B  
 # ? . % 7 .	goo	.:J#
 J#rB   