
    6pj8                         S r SSKJrJr  SSKrSSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  \" 5       rS	rS
 r " S S\5      rg)a+  ModelScope Studio runtime management CLI.

This module exposes a ``modelscope studio`` command group that wraps the
Studio OpenAPI methods on :class:`~modelscope.hub.api.HubApi`. Each CLI
subcommand is a thin adapter that parses arguments, delegates to a single
``HubApi`` method and renders a concise human-readable result.

Subcommand layout::

    modelscope studio deploy   <studio_id>
    modelscope studio stop     <studio_id>
    modelscope studio logs     <studio_id> [--type ...] [--keyword ...] ...
    modelscope studio settings <studio_id> [--display-name ...] ...
    modelscope studio secret   list   <studio_id>
    modelscope studio secret   add    <studio_id> <key> <value>
    modelscope studio secret   update <studio_id> <key> <value>
    modelscope studio secret   delete <studio_id> <key>
    )ArgumentParser_SubParsersActionN)
CLICommand)HubApi)resolve_endpoint)StudioSDKType)
get_logger)runbuildc                     [        U 5      $ )z=Function which will be called for a specific sub parser.
    )	StudioCMDargss    Q/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/modelscope/cli/studio.pysubparser_funcr   $   s     T?    c                       \ rS rSrSrSrS r\SS j5       r\S\	4S j5       r
\S	 5       r\S
 5       r\S 5       r\S 5       rS rS rS r\S 5       rS rS rS rSrg)r   *   zStudio runtime management commands.

Dispatches to a per-subcommand handler based on ``args.studio_action``
(and, for ``secret``, ``args.secret_action``).
studioc                     Xl         g )Nr   )selfr   s     r   __init__StudioCMD.__init__3   s    	r   Nc                 .    [         R                  U 5        g)z5Register studio subcommand (CLICommand ABC contract).N)r   define_args)
subparserss    r   registerStudioCMD.register9   s     	j)r   parsersc                    U R                  [        R                  SS9nUR                  S[        S SS9  UR                  S[        S SS9  UR                  SS	S
9n[        R                  USSS9  [        R                  USSS9  [        R                  U5        [        R                  U5        [        R                  U5        UR                  [        S9  g )Nz%Manage ModelScope studios at runtime.helpz--tokenz.Optional access token used for authentication.typedefaultr"   z
--endpointz`ModelScope server endpoint. Falls back to env MODELSCOPE_DOMAIN, then https://www.modelscope.cn.studio_actionzStudio subcommands.destr"   deployz&Deploy (re-pull and rebuild) a studio.)name	help_textstopzStop a running studio.)func)
add_parserr   r*   add_argumentstradd_subparsers_add_simple_id_parser_add_logs_parser_add_settings_parser_add_secret_parserset_defaultsr   )r   parseraction_subparserss      r   r   StudioCMD.define_args>   s   !(!3!3NN!H "4 "J 	A	 	 	C
 	A	 	 	B #11 '< 2 > 	''> 	( 	@ 	''F6N 	( 	P""#45&&'89$$%670r   c                 L    U R                  XS9nUR                  S[        SS9  g )Nr!   	studio_id*Studio ID in the format `owner/repo_name`.r$   r"   )r.   r/   r0   )r8   r*   r+   subs       r   r2   StudioCMD._add_simple_id_parser^   s1    **4*@= 	 	?r   c                 `   U R                  SSS9nUR                  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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  g )Nlogsz#Fetch studio runtime or build logs.r!   r;   r<   r=   z--typelog_typer
   z&Log type to fetch (defaults to 'run').r(   choicesr%   r"   z	--keywordz%Optional keyword to filter log lines.r#   z
--page-numpage_num   zPage number, starting from 1.r(   r$   r%   r"   z--page-size	page_sized   zNumber of log entries per page.z--start-timestampstart_timestampz/Optional start timestamp (seconds since epoch).z--end-timestampend_timestampz-Optional end timestamp (seconds since epoch).)r.   r/   r0   
_LOG_TYPESint)r8   r>   s     r   r3   StudioCMD._add_logs_parserf   s   **> + @= 	 	? 	9 	 	; 	8	 	 	:
 	0 	 	2 	2 	 	4 	"B 	 	D 	 @ 	 	Br   c           	      :   U R                  SSS9nUR                  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9  UR                  SS[        S SS
9  UR                  SS[        R                  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9  UR                  5       nUR                  SS S!S"S S#S$9  UR                  S%S S!S&S'S(9  g ))Nsettingsz<Update studio settings (only specified fields are modified).r!   r;   r<   r=   z--display-namedisplay_namez#Studio display name (Chinese name).rG   z--descriptionzStudio description.r#   z	--licensezStudio license.z--cover-imagecover_imagezStudio cover image URL.z
--sdk-typesdk_typez(Studio SDK type (requires redeployment).rC   z--sdk-versionsdk_versionz+Studio SDK version (requires redeployment).z--base-image
base_imagez*Studio base image (requires redeployment).z
--hardwarez6Studio hardware configuration (requires redeployment).z	--privateprivatestore_constTzMark the studio as private.)r(   actionconstr%   r"   z--publicFzMark the studio as public.)r(   rX   rY   r"   )r.   r/   r0   r   	SUPPORTEDadd_mutually_exclusive_group)r8   r>   visibility_groups      r   r4   StudioCMD._add_settings_parser   s   **O + 
 	= 	 	? 	6 	 	8 	&	 	 	(
 	c46G 	 	I* 	 	, 	!++; 	 	= 	> 	 	@ 	= 	 	? 	I	 	 	K
 ;;=%% . 	& 	0 	%% - 	& 	/r   c                 6   U R                  SSS9nUR                  SSS9nUR                  SSS9nUR                  S	[        S
9  UR                  SSS9nUR                  S	[        S
9  UR                  S[        SS9  UR                  S[        SS9  UR                  SSS9nUR                  S	[        S
9  UR                  S[        SS9  UR                  S[        SS9  UR                  SSS9nUR                  S	[        S
9  UR                  S[        SS9  g )Nsecretz.Manage studio environment variables (secrets).r!   secret_actionzSecret subcommands.r'   listz+List secret keys (values are not returned).r;   )r$   addzAdd a secret.keyzSecret name.r=   valuezSecret value.updatezUpdate an existing secret.zNew secret value.deletezDelete a secret.zSecret name to delete.)r.   r1   r/   r0   )r8   secret_parsersecret_subparserslist_subadd_subupd_subdel_subs          r   r5   StudioCMD._add_secret_parser   sZ   )44K 5 M)88 '< 9 > %//F 0 Hk4#..u?.K[s3U>BW3_E#..7 / 9[s3U>BW35HI#..- / /[s3U3KLr   c                 f   [        U R                  SS 5      nUc  [        S5      e[        U R                  R                  5      n[        US9nU R                  U R                  U R                  U R                  U R                  S.nUR                  U5      nUc  [        SU 35      eU" X25        g )Nr&   z\No studio subcommand specified. Run 'modelscope studio --help' to see available subcommands.)endpoint)r)   r,   rA   rP   r_   zUnknown studio subcommand: )getattrr   
SystemExitr   ro   r   
_do_deploy_do_stop_do_logs_do_settings
_do_secretget)r   rX   ro   apihandlershandlers         r   executeStudioCMD.execute   s    OT:>OP P $DII$6$67h' ooMMMM))oo
 ,,v&?:6(CDDr   c                     UR                  U R                  R                  U R                  R                  US9n[	        SU R                  R                   S35        U R                  U5        g )Ntokenro   zDeploy triggered for studio .)deploy_studior   r;   r   print_print_statusr   rx   ro   datas       r   rr   StudioCMD._do_deploy
  s\      IItyy ! K,TYY-@-@,ACD4 r   c                     UR                  U R                  R                  U R                  R                  US9n[	        SU R                  R                   S35        U R                  U5        g )Nr~   zStop triggered for studio r   )stop_studior   r;   r   r   r   r   s       r   rs   StudioCMD._do_stop  sZ    IItyy  K*499+>+>*?qAB4 r   c                     U (       d  g [        U [        5      (       a  U R                  S5      OS nU(       a  [        SU 35        g [        [        R
                  " U SSS95        g )NstatuszStatus: F   ensure_asciiindent)
isinstancedictrw   r   jsondumps)r   r   s     r   r   StudioCMD._print_status  sK    '1$'='=(#4HVH%&$**Ta@Ar   c                 &   UR                  U R                  R                  U R                  R                  U R                  R                  U R                  R
                  U R                  R                  U R                  R                  U R                  R                  U R                  R                  US9	n[        U[        5      (       d  [        U5        g UR                  S5      nUc   [        [        R                  " USSS95        g U H  n[        U[        5      (       a  UR                  S5      =(       d    UR                  S5      =(       d    SnUR                  S	5      =(       d    UR                  S
5      =(       d    SnU(       a  SU SU 3O
[!        U5      nO[!        U5      n[        U5        M     UR                  S5      n	U	b>  [        SU R                  R                   SU R                  R
                   SU	 S35        g g )N)rB   rE   rH   keywordrJ   rK   r   ro   rA   Fr   r   	timestamptime contentmessage[z] totalz-- page z (size z	), total z --)get_studio_logsr   r;   rB   rE   rH   r   rJ   rK   r   r   r   r   rw   r   r   r0   )
r   rx   ro   r   rA   entrytsmsgliner   s
             r   rt   StudioCMD._do_logs!  s   ""IIYY''YY''ii))II%% II55))11))// # 	 $%%$Kxx<$**Ta@AE%&&YY{+Fuyy/@FBii	*Heii	.BHb*,2$b#c(5z$K  !499--.gdii6I6I5J Ks$% r   c           
         / SQnU Vs0 s H4  n[        U R                  US 5      c  M  U[        U R                  U5      _M6     nnU(       d  [        S5      eUR                  " U R                  R                  4U R                  R
                  US.UD6n[        SU R                  R                   SSR                  [        U5      5       S35        U(       a   [        [        R                  " USS	S
95        g g s  snf )N)	rQ   descriptionlicenserR   rS   rT   rU   hardwarerV   zNo setting specified. Provide at least one of: --display-name, --description, --license, --cover-image, --sdk-type, --sdk-version, --base-image, --hardware, --private/--public.r~   zUpdated settings for studio z: z, r   Fr   r   )rp   r   rq   update_studio_settingsr;   r   r   joinsortedr   r   )r   rx   ro   fieldsfrP   r   s          r   ru   StudioCMD._do_settingsD  s    
 
wtyy!T: %Awtyy!$$ 	 
 &' '
 ))II))// 	
 	,TYY-@-@,A6(+,-Q0 	1$**Ta@A #
s
   C<C<c                    [        U R                  SS 5      nUc  [        S5      eUS:X  a  UR                  U R                  R                  U R                  R
                  US9nU(       d  [        S5        g U H6  n[        U[        5      (       a  UR                  S5      OUn[        U5        M8     g US:X  a  UR                  U R                  R                  U R                  R                  U R                  R                  U R                  R
                  US9  [        SU R                  R                  < S	35        g US
:X  a  UR                  U R                  R                  U R                  R                  U R                  R                  U R                  R
                  US9  [        SU R                  R                  < S35        g US:X  as  UR                  U R                  R                  U R                  R                  U R                  R
                  US9  [        SU R                  R                  < S35        g [        SU 35      e)Nr`   zPNo secret subcommand specified. Run 'modelscope studio secret --help' for usage.ra   r~   z(no secrets)rc   rb   zSecret z added.re   z	 updated.rf   z	 deleted.zUnknown secret subcommand: )rp   r   rq   list_studio_secretsr;   r   r   r   r   rw   add_studio_secretrc   rd   update_studio_secretdelete_studio_secret)r   rx   ro   rX   secretsitemrc   s          r   rv   StudioCMD._do_secret^  s   OT:>CD D V--		##499??X . OGn%)3D$)?)?dhhuoTc
   u_!!		##				iioo! " # GDIIMM,G45x$$		##				iioo! % # GDIIMM,I67x$$		##		iioo!	 % #
 GDIIMM,I67:6(CDDr   r   )returnN)__name__
__module____qualname____firstlineno____doc__r*   r   staticmethodr   r   r   r2   r3   r4   r5   r{   rr   rs   r   rt   ru   rv   __static_attributes__ r   r   r   r   *   s     D * * 1. 1 1> ? ? )B )BV @/ @/D M M:.!! B B %FB4'Er   r   )r   argparser   r   r   modelscope.cli.baser   modelscope.hub.apir   modelscope.hub.utils.utilsr   modelscope.utils.constantr   modelscope.utils.loggerr	   loggerrL   r   r   r   r   r   <module>r      sD   $ 7  * % 7 3 .	 
[E
 [Er   