
    5pj                        S r SSKJr  SSKrSSKJr  SSKJrJrJ	r	J
r
JrJrJr  SSKJr   " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      rSS jrg)z``ms deploy`` / ``ms stop`` / ``ms logs`` / ``ms settings`` commands.

These wrap the studio / MCP lifecycle and the studio / skill settings
endpoints exposed by :class:`HubApi`.
    )annotationsN   )RepoType   )
CLICommand
SubParsersadd_repo_type_arginfomake_apiparse_kv_pairssuccess)add_subcmd_token_endpointc                  6    \ rS rSrSr\SS j5       rSS jrSrg)	DeployCommand   z'Deploy a Studio space or an MCP server.c                .   U R                  SSS9nUR                  S5        [        U[        R                  R
                  [        R                  R
                  /[        R                  R
                  SS9  [        U5        UR                  [        S9  g )Ndeployz$Deploy a studio space or MCP server.helprepo_idFchoicesdefaultrequired_command)

add_parseradd_argumentr	   r   STUDIOvalueMCPr   set_defaultsr   
subparsersps     U/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/modelscope_hub/cli/deploy.pyregisterDeployCommand.register   ss    !!(1W!X	y!__**HLL,>,>?OO))		
 	"!$	.    c                   [        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Deploy requested for : )r   argsdeploy_repor   	repo_typer   selfapis     r&   executeDeployCommand.execute(   s^    tyy!		))499+>+>?'		(;(;'<Btyy?P?P>QRSr)    Nr$   r   returnNoner6   r7   	__name__
__module____qualname____firstlineno____doc__staticmethodr'   r2   __static_attributes__r4   r)   r&   r   r      s    1
/ 
/Tr)   r   c                  6    \ rS rSrSr\SS j5       rSS jrSrg)	StopCommand.   z0Stop a running Studio or undeploy an MCP server.c                .   U R                  SSS9nUR                  S5        [        U[        R                  R
                  [        R                  R
                  /[        R                  R
                  SS9  [        U5        UR                  [        S9  g )Nstopz+Stop a studio space or undeploy MCP server.r   r   Fr   r   )
r   r   r	   r   r   r    r!   r   r"   rB   r#   s     r&   r'   StopCommand.register1   ss    !!&/\!]	y!__**HLL,>,>?OO))		
 	"!$	,r)   c                   [        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Stop requested for r+   )r   r,   	stop_repor   r.   r   r/   s     r&   r2   StopCommand.execute>   s^    tyy!dii'')<)<=%dii&9&9%:"TYY=N=N<OPQr)   r4   Nr5   r8   r9   r4   r)   r&   rB   rB   .   s    :
- 
-Rr)   rB   c                  6    \ rS rSrSr\SS j5       rSS jrSrg)	LogsCommandD   z4Stream paginated run / build logs of a Studio space.c                   U R                  SSS9nUR                  S5        [        U[        R                  R
                  /[        R                  R
                  SS9  UR                  SS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9  [        U5        UR                  [        S9  g )NlogszFetch logs for a studio space.r   r   Fr   z
--log-typelog_typerunbuild)destr   r   z--pagez
--page-numpage_numr   )rR   typer   z--page-size	page_sized   z	--keyword)r   r   )
r   r   r	   r   r   r    intr   r"   rK   r#   s     r&   r'   LogsCommand.registerG   s    !!&/O!P	y!__**+OO))		
 	
|*ug>NX]^	xJSRST	};S#N	{D1!!$	,r)   c           	        [        U R                  5      nUR                  U R                  R                  U R                  R                  U R                  R
                  U R                  R                  U R                  R                  U R                  R                  S9n[        U5      nU(       a  U H  n[        U5        M     g [        [        R                  " USS[        S95        g )N)rO   rS   rU   keywordr   F)indentensure_asciir   )r   r,   get_repo_logsr   r.   rO   rS   rU   rZ   _extract_log_linesr
   jsondumpsstr)r0   r1   payloadlineslines        r&   r2   LogsCommand.executeX   s    tyy!##IIIIYY''YY''ii))II%% $ 
 #7+T
  GAE3OPr)   r4   Nr5   r8   r9   r4   r)   r&   rK   rK   D   s    >- - Qr)   rK   c                  6    \ rS rSrSr\SS j5       rSS jrSrg)	SettingsCommandk   z8Update Studio / Skill settings via ``key=value`` tokens.c                P   U R                  SSS9nUR                  S5        [        U[        R                  R
                  [        R                  R
                  /[        R                  R
                  SS9  UR                  SSSS	9  [        U5        UR                  [        S
9  g )Nsettingsz2Update studio or skill settings (key=value pairs).r   r   Fr   +zOne or more key=value pairs.)nargsr   r   )
r   r   r	   r   r   r    SKILLr   r"   rg   r#   s     r&   r'   SettingsCommand.registern   s    !!E " 
 	
y!__**HNN,@,@AOO))		
 	
z3QR!!$	0r)   c                B   [        U R                  R                  5      n[        U R                  5      nUR                  " U R                  R
                  U R                  R                  40 UD6  [        S[        U5       SU R                  R
                   S35        g )NzUpdated z setting(s) on .)	r   r,   rj   r   update_repo_settingsr   r.   r   len)r0   kvr1   s      r&   r2   SettingsCommand.execute   ss    DII../tyy!  !2!2DII4G4GN2N(3r7)?4993D3D2EQGHr)   r4   Nr5   r8   r9   r4   r)   r&   rg   rg   k   s    B1 1 Ir)   rg   c           	        [        U [        5      (       a  U  Vs/ s H  n[        U5      PM     sn$ [        U [        5      (       a  S H  nU R	                  U5      n[        U[        5      (       a`  U Vs/ s HP  n[        U[        5      (       d  [        U5      O,UR	                  S5      =(       d    [
        R                  " USS9PMR     sns  $ [        U[        5      (       d  M  UR                  5       s  $    / $ s  snf s  snf )z@Best-effort extraction of log lines from various backend shapes.)rN   itemslistdatamessageF)r\   )
isinstancerw   ra   dictgetr_   r`   
splitlines)rb   itemkeyr    vs        r&   r^   r^      s    '4  &-.gdD	g..'4  4CKK$E%&& #" #-Q"5"5CFAEE)<L<qPTPZPZ[\kpPqr"  %%%'')) 5 I /
s   C?6AD)rb   objectr6   z	list[str])r>   
__future__r   r_   	constantsr   baser   r   r	   r
   r   r   r   compatr   r   rB   rK   rg   r^   r4   r)   r&   <module>r      sg    #      .TJ T,R* R,$Q* $QNIj I<r)   