
    5pj15                       S r SSKJr  SSKrSSKJr  SSKJr  SSKJ	r	J
r
  SSKJr  S	S
KJrJrJrJrJrJrJrJrJr  S	SKJr  SS jrSS jr " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r\r g)zRepository management commands: create / info / list / delete.

These are registered as top-level commands (``ms create``, ``ms info``, etc.).
The legacy ``ms repo <action>`` form is preserved as a hidden alias.
    )annotationsN)Path   )RepoType)AlreadyExistsErroris_repo_exists_error)RepoInfo   )	
CLICommand
SubParsersadd_repo_type_argerrorinfomake_apiprint_env_tablerender_tablesuccess)add_subcmd_token_endpointc                p    U c  g[        U SS 5      =(       d    [        U SS 5      =(       d    [        U 5      $ )N-labelname)getattrstr)values    S/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/modelscope_hub/cli/repo.py_format_visibilityr      s1    }5'4(VGE64,HVCPUJV    c                   [        SU R                  b  U R                  OS 35        [        SU R                  =(       d    S 35        [        S[        U R                  SU R                  5      =(       d    S 35        [        S[        U R                  5       35        [        SU R                  =(       d    S 35        [        SU R                   35        [        S	U R                   35        U R                  (       a  [        S
U R                   35        U R                  (       a(  [        SSR                  U R                  5       35        g g )Nzid         : r   zrepo_id    : zrepo_type  : r   zvisibility : zlicense    : zdownloads  : zlikes      : zdescription: ztags       : z, )r   idrepo_idr   	repo_typer   
visibilitylicense	downloadslikesdescriptiontagsjoin)repos    r   _print_repo_infor+   #   s   =DGG$7SA	BC=,-	./=$..IPSQ	RS=+DOO<=	>?=,-	./=(	)*=	%&}T--./0yy}TYYtyy1234 r   c                  J    \ rS rSrSr\SS j5       r\S	S j5       rS	S jrSr	g)
CreateCommand4   u*   ``ms create`` — create a new repository.c                t    U R                  SSS9n[        R                  U5        UR                  [        S9  g )NcreateCreate a new repository.help_command)
add_parserr-   _add_argumentsset_defaults
subparsersps     r   registerCreateCommand.register7   s4    !!(1K!L$$Q'	.r   c           	     t   U R                  SSS9  [        U / SQS9  U R                  S/ SQS S9  U R                  S	S
S S9  U R                  SSSS S9  U R                  SSS S9  U R                  SSSSSSS9  U R                  5       nUR                  SSSS SS9  UR                  SSSSS9  U R                  SS / S!QS S"S#9  U R                  S$S%S S&S'9  U R                  S(S)S S*S'9  U R                  S+S,S S-S'9  U R                  S.S/S S0S'9  U R                  S1S2S S3S'9  U R                  S4S5S S6S'9  [        U 5        g )7Nr!   z"Canonical 'owner/name' identifier.r2   )modeldatasetstudioskillchoicesz--visibility)publicprivateinternal)rD   defaultz	--licenser$   )destrH   z--chinese-namez--chinese_namechinese_namez--descriptionr'   z
--exist-okz
--exist_okexist_ok
store_trueFz*Do not error if repository already exists.rI   actionrH   r3   z--gatedgatedzGCreate a gated (application-required) repo. Implies private visibility.z
--no-gatedstore_falsez-Explicitly create a non-gated repo (default).)rI   rN   r3   z
--sdk-typesdk_type)gradio	streamlitdockerstaticzStudio SDK type.)rI   rD   rH   r3   z--sdk-versionsdk_versionzStudio SDK version.)rI   rH   r3   z--base-image
base_imagezStudio base image.z--cover-imagecover_imagezStudio cover image URL.z
--hardwarehardwarezStudio hardware spec.z
--categorycategoryzSkill category (required for skill repos). Options: skill-management, developer-tools, marketing-seo, frontend-development, ai-media, code-quality-testing, mobile-development, cloud-devops, other.z--skill-file
skill_filezzLocal zip for skill (max 5 MB, root must contain exactly one SKILL.md with YAML front-matter: name, version, description).)add_argumentr   add_mutually_exclusive_groupr   )r;   gated_groups     r   r7   CreateCommand._add_arguments=   s   	y'KL!%LM	~/PZ^_	{DA	')9X\]	]DI	= 	 	
 446  Z 	! 	
 	   @	 	! 	
 	
?# 	 	
 	
]DOde	~L$Mab	]DOhi	|*dI`a	7	 	 	
 	
L	 	 	
 	"!$r   c                   [        U R                  5      n0 nS H#  n[        U R                  US 5      nUc  M  XBU'   M%     [        U R                  SS 5      nU(       aj  [        U5      R	                  5       nUR                  5       (       d  [        SU 35        [        S5      e[        SU 35        UR                  U5      nXrS'   U R                  R                  n[        U R                  SS 5      n	 UR                  " U R                  R                  U R                  R                  4UU R                  R                  U R                  R                  [        U R                  SS 5      U	S.UD6n
[!        S	U R                  R                   S
U
R                  =(       d    U R                  R                   35        g ! ["         aB    [        U R                  SS5      (       a$  [        SU R                  R                   35         g e [$         aY  n[        U R                  SS5      (       a7  ['        U5      (       a'  [        SU R                  R                   35         S nAg e S nAff = f)N)rQ   rV   rW   rX   rY   rZ   r[   zSkill file not found: r   zUploading skill file: rO   r'   )r#   r$   rJ   r'   
gated_modezCreated : rK   FzRepository already exists: )r   argsr   r   
expanduserexistsr   
SystemExitr   upload_file_to_openapir#   create_repor!   r"   r$   rJ   r   r   	Exceptionr   )selfapiextrakeyr   r[   r;   file_idr#   ra   r*   excs               r   executeCreateCommand.executex   s   tyy!#%cCDIIsD1E "c
 d
 TYYd;
Z ++-A88::.qc23 m#)!-.003G"),YY))
TYY6
	??		!!		##	 &		))!YY33#DII}dC%	 	D htyy2232dll6WdiiFWFW5XYZ! 	tyy*e4424993D3D2EFG 	tyy*e449Mc9R9R24993D3D2EFG		s'   7CG AI0
I0AI+*I++I0 Nr:   r   returnNonert   ru   
__name__
__module____qualname____firstlineno____doc__staticmethodr<   r7   rp   __static_attributes__rr   r   r   r-   r-   4   s1    4/ /
 8% 8%t*r   r-   c                  J    \ rS rSrSr\SS j5       r\S	S j5       rS	S jrSr	g)
InfoCommand   u/   ``ms info`` — show metadata for a repository.c                t    U R                  SSS9n[        R                  U5        UR                  [        S9  g )Nr   Show metadata for a repository.r2   r4   )r6   r   r7   r8   r9   s     r   r<   InfoCommand.register   s4    !!&/P!Q""1%	,r   c                R    U R                  S5        [        U 5        [        U 5        g )Nr!   )r\   r   r   r;   s    r   r7   InfoCommand._add_arguments   s    	y!!!!$r   c                    [        U R                  5      nUR                  U R                  R                  U R                  R                  5      n[        U5        g N)r   rc   get_repor!   r"   r+   )rj   rk   r*   s      r   rp   InfoCommand.execute   s<    tyy!||DII--tyy/B/BCr   rr   Nrs   rv   rw   rr   r   r   r   r      s0    9- -
 % %
r   r   c                  J    \ rS rSrSr\SS j5       r\S	S j5       rS	S jrSr	g)
DeleteCommand   u&   ``ms delete`` — delete a repository.c                t    U R                  SSS9n[        R                  U5        UR                  [        S9  g )Ndeletez'Delete a repository (model or dataset).r2   r4   )r6   r   r7   r8   r9   s     r   r<   DeleteCommand.register   s4    !!(1Z![$$Q'	.r   c                    U R                  S5        [        U [        R                  R                  [        R
                  R                  /S9  U R                  SSSSS9  [        U 5        g )Nr!   rC   z--yesz-yrL   zSkip the confirmation prompt.)rN   r3   )r\   r   r   MODELr   DATASETr   r   s    r   r7   DeleteCommand._add_arguments   sP    	y!!hnn&:&:H<L<L<R<R%ST	w\@_`!!$r   c                   U R                   R                  (       di  [        SU R                   R                   SU R                   R                  < S35      R                  5       R                  5       nUS;  a  [        S5        g [        U R                   5      nUR                  U R                   R                  U R                   R                  5        [        SU R                   R                   SU R                   R                   35        g )NzDelete  z? This cannot be undone. [y/N] )yyeszAborted.zDeleted rb   )rc   r   inputr"   r!   striplowerr   r   delete_repor   )rj   answerrk   s      r   rp   DeleteCommand.execute   s    yy}}		 3 34Adii6G6G5JJijk 
 \)Z tyy!		))499+>+>?(499../r$))2C2C1DEFr   rr   Nrs   rv   rw   rr   r   r   r   r      s1    0/ /
 % %Gr   r   c                  l    \ rS rSrSr\SS j5       r\SS j5       rSrSS jr	SS jr
\SS j5       rS	rg
)ListCommand   u;   ``ms list`` — list repositories or environment variables.c                t    U R                  SSS9n[        R                  U5        UR                  [        S9  g )Nlistz0List repositories or show configurable env vars.r2   r4   )r6   r   r7   r8   r9   s     r   r<   ListCommand.register   s4    !!&/a!b""1%	,r   c           	        U R                  SSSSS9  [        U SS [        R                  R                  [        R
                  R                  [        R                  R                  [        R                  R                  /S9  U R                  SS S9  U R                  S	S [        R                  S
9  U R                  5       nUR                  SSSSSS9  UR                  SS[        SS9  U R                  SS[        SS9  [        U 5        g )Nz--envsrL   Fz5Show all configurable environment variables and exit.)rN   rH   r3   )requiredrH   rD   z--owner)rH   z--search)rH   r3   z--all	fetch_allzFetch all pages automatically.rM   z--pagepage_numberr
   )rI   typerH   z--page-size	page_size
   )r\   r   r   r   r   r   SKILLMCPargparseSUPPRESSr]   intr   )r;   pagings     r   r7   ListCommand._add_arguments   s    	H	 	 	
 	$$  &&$$""		
	
 	
y$/	z4h6G6GH//1+lEPp 	 	
 	H=sAN	};S"M!!$r   2   c           	     t   U R                   R                  (       a  [        5         g U R                   R                  (       d  [	        S5        [        S5      e[        U R                   5      n[        U R                   SS5      (       aN  U R                  U5      nU(       d  [        S5        g U R                  U5        [        S[        U5       S35        g UR                  U R                   R                  U R                   R                  U R                   R                  U R                   R                  U R                   R                   S9nUR"                  (       d  [        S5        g U R                  UR"                  5        [        S	UR                   S
UR$                   SUR                    S35        g )Nz.--repo-type is required (unless using --envs).r   r   Fz(no repositories found)z
total z reposownersearchr   r   z
page z	 / total z (page_size=))rc   envsr   r"   r   rf   r   r   _fetch_all_pagesr   _render_tablelen
list_reposr   r   r   r   itemstotal_count)rj   rk   	all_itemsresults       r   rp   ListCommand.execute  sG   99>>yy""BCQ-tyy!499k511--c2I./y)8C	N+623^^		##iiooyy'' II11))-- $ F <<./v||,76--.i8J8J7K<X^XhXhWiijklr   c                   [        U R                  R                  U R                  5      n/ nSn UR	                  U R                  R
                  U R                  R                  U R                  R                  UUS9nUR                  UR                  5        UR                  (       a  UR                  (       d   U$ US-  nXB-  S:  a  [        SUS-
   S35         U$ M  )Nr
   r   i  z
(stopped at page z: server offset limit reached))minrc   r   _MAX_PAGE_SIZEr   r"   r   r   extendr   has_nextr   )rj   rk   r   r   r   r   s         r   r   ListCommand._fetch_all_pages!  s    		++T-@-@A	$&	^^		##iiooyy'''# $ F V\\*??&,,
 	 1K&-*;?*;;YZ[ r   c           	         U  Vs/ s HW  nUR                   =(       d    S[        UR                  5      UR                  UR                  UR
                  =(       d    S4PMY     nn[        [        U/ SQS95        g s  snf )Nr   )r!   r#   r%   r&   r$   )headers)r!   r   r#   r%   r&   r$   r   r   )r   rrowss      r   r   ListCommand._render_table6  ss     	
  		 S"1<<0		 S  	 	
 	\$(bcd	
s   AA;rr   Nrs   rv   )rt   list[RepoInfo])r   r   rt   ru   )rx   ry   rz   r{   r|   r}   r<   r7   r   rp   r   r   r~   rr   r   r   r   r      sT    E- -
 % %8 Nm@* e er   r   c                  6    \ rS rSrSr\SS j5       rSS jrSrg)	RepoCommandiH  zAHidden compat dispatcher for ``ms repo create/info/list/delete``.c                   U R                  S5      n[        U SS 5      nUb)  U Vs/ s H  o3R                  S:w  d  M  UPM     snU l        UR	                  SSS9nSUl        UR                  SSS	9n[        R                  U5        UR                  [        S
9  UR                  SSS	9n[        R                  U5        UR                  [        S
9  UR                  SSS	9n[        R                  U5        UR                  [        S
9  UR                  SSS	9n[        R                  U5        UR                  [        S
9  UR                  [        S
9  g s  snf )Nr*   _choices_actionsrepo_actionACTION)rI   metavarTr0   r1   r2   r4   r   r   r   zDelete a repository.r   zList repositories.)r6   r   rI   r   add_subparsersr   r-   r7   r8   r   r   r   r   )r:   parserchoices_actionsasubr;   s         r   r<   RepoCommand.registerK  s;   &&v. "*.@$G&6E*ZoSYIY1o*ZJ'###I NN8*DNE$$Q'	.NN6(INJ""1%	,NN8*@NA$$Q'	.NN6(<N=""1%	,[1+ +[s
   EEc                    g r   rr   )rj   s    r   rp   RepoCommand.executej  s    r   rr   Nrs   rv   )	rx   ry   rz   r{   r|   r}   r<   rp   r~   rr   r   r   r   r   H  s    K2 2<r   r   )r   objectrt   r   )r*   r	   rt   ru   )!r|   
__future__r   r   pathlibr   	constantsr   errorsr   r   typesr	   baser   r   r   r   r   r   r   r   r   compatr   r   r+   r-   r   r   r   r   _RepoCreaterr   r   r   <module>r      s    #     = 
 
 
 .W5"nJ nb* *GJ G>ie* ie^#* #N r   