
    5pjH&                       S r SSKJr  SSKrSSKrSSK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JrJr  S
SKJr  S
SKJrJrJr  S
SKJrJrJr  S
SKJrJrJ r 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.  S
SK/J0r0  S
SK1J2r2  \%\&\*\,\-\+\#\2\\!\\ \0\(\\/r3Sr4S%S jr5S&S jr6S&S jr7S&S jr8 " S S\5      r9 " S S\5      r:S&S jr;S'S jr<S S!.S(S" jjr=S)S*S# jjr>\?S$:X  a  \R                  " \>" 5       5        gg)+a  Entry point for the ``modelscope-hub`` / ``ms-hub`` console scripts.

This module is also reused by the umbrella ``modelscope`` package for its
``modelscope`` / ``ms`` commands. Because a single parser serves all four
aliases, the program name is derived from ``sys.argv[0]`` (rather than
hard-coded) so help/usage output shows whichever command was actually
invoked.

Subcommands live in dedicated modules and are wired in via their
:meth:`CLICommand.register` static method. :func:`run_cmd` is intentionally
small: it builds the argparse tree, dispatches to the chosen subcommand,
and translates SDK exceptions into friendly, machine-parseable output.
    )annotationsN)SUPPRESS)Sequence   )__version__)MODELSCOPE_ASCII)HubErrorInvalidParameterNotSupportedError   )AgentCommand)
CLICommanderrorinfo)CacheCommand_CacheClear
_CacheScan)DeployCommandLogsCommandSettingsCommandStopCommand)DownloadCommand)LoginCommandWhoamiCommand)
McpCommand)CreateCommandDeleteCommandInfoCommandListCommandRepoCommand)SecretCommand)UploadCommandzmodelscope_hub.cli_pluginsc                 ^   [         R                  " SS9n U R                  SSSS[         3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S9nSUl        [         H  nUR                  U5        M     [        U5        [        U5        U $ )Nz&ModelScope Hub command-line interface.)descriptionz-Vz	--versionversionzmodelscope-hub )actionr%   z--tokenzCAPI token (overrides MODELSCOPE_API_TOKEN and the persisted token).)defaulthelpz
--endpointz-API endpoint (overrides MODELSCOPE_ENDPOINT).z-vz	--verbose
store_truez:Enable DEBUG logging and print the full error cause chain.r&   r(   commandCOMMAND)destmetavarT)
argparseArgumentParseradd_argumentr   add_subparsersrequired	_COMMANDSregister_register_aliases_discover_plugins)parser
subparserscmds      S/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/modelscope_hub/cli/main.py_build_parserr<   ?   s     $$<F !+/	   R  
 <  
 I	   &&Iy&IJJZ   j! j!M    c                \    [         R                  " U 5        [        U 5        [        U 5        g)z@Register top-level command aliases for legacy CLI compatibility.N)r    r5   _register_scan_cache_alias_register_clear_cache_aliasr9   s    r;   r6   r6   q   s     $z*
+r=   c                n    U R                  SSS9nUR                  SSSSS9  UR                  [        S	9  g)
u:   ``ms-hub scan-cache`` → alias for ``ms-hub cache scan``.z
scan-cachez)[Alias] Show cached repos and disk usage.r(   z--dir--cache-dir	cache_dirN)r-   r'   _command)
add_parserr1   set_defaults_ScanCacheAlias)r9   ps     r;   r?   r?   x   s:    l1\]ANN7MTNJNNON,r=   c                   U R                  SSS9nUR                  5       nUR                  S[        S[        S9  UR                  S[        S[        S9  UR                  SS	SS
S9  UR                  SSSSS9  UR                  [        S9  g)u<   ``ms-hub clear-cache`` → alias for ``ms-hub cache clear``.zclear-cachez[Alias] Remove cached files.rC   z--modelN)typer'   r(   z	--datasetrD   rE   zOverride cache directory.)r-   r'   r(   z--yesz-yr)   zSkip confirmation.r*   rF   )rH   add_mutually_exclusive_groupr1   strr   rI   _ClearCacheAlias)r9   rK   groups      r;   r@   r@      s     	m2PQA**,E	ysDxH	{dJNN={DGbNcNN7D<PNQNN,N-r=   c                  6    \ rS rSrSr\SS j5       rSS jrSrg)rJ      u5   Adapter: top-level ``scan-cache`` → ``cache scan``.c                    g N rA   s    r;   r5   _ScanCacheAlias.register       r=   c                J    [        U R                  5      R                  5         g rU   )r   argsexecute)selfs    r;   r[   _ScanCacheAlias.execute   s    499%%'r=   rV   NreturnNone	__name__
__module____qualname____firstlineno____doc__staticmethodr5   r[   __static_attributes__rV   r=   r;   rJ   rJ      s    ? (r=   rJ   c                  6    \ rS rSrSr\SS j5       rSS jrSrg)rP      uo   Adapter: top-level ``clear-cache`` → ``cache clear``.

Maps legacy --model/--dataset to repo_type + repo_id.
c                    g rU   rV   rA   s    r;   r5   _ClearCacheAlias.register   rX   r=   c                   [        U R                  SS 5      n[        U R                  SS 5      nU(       a"  SU R                  l        XR                  l        OKU(       a"  SU R                  l        X R                  l        O"S U R                  l        S U R                  l        [	        U R                  5      R                  5         g )Nmodeldataset)getattrrZ   	repo_typerepo_idr   r[   )r\   rn   ro   s      r;   r[   _ClearCacheAlias.execute   s    		7D1$))Y5")DII %II"+DII 'II"&DII $DIIDII&&(r=   rV   Nr^   ra   rV   r=   r;   rP   rP      s     
  )r=   rP   c                   [         R                  R                  [        S9nU H\  n UR	                  5       n[        US5      (       a  UR                  U 5        M8  [        US5      (       a  UR                  U 5        M\  M^     g! [         a@  n[        R                  " [        5      R                  SUR                  U5         SnAM  SnAff = f)z1Discover CLI plugins registered via entry_points.)rQ   r5   define_argsz Failed to load CLI plugin %r: %sN)	importlibmetadataentry_points_PLUGIN_GROUPloadhasattrr5   ru   	Exceptionlogging	getLoggerrb   debugname)r9   epsepcmd_clsexcs        r;   r7   r7      s     


)
)
)
>C	`ggiGw
++  ,-00##J/ 1   	`h'--.PRTRYRY[^__	`s   2B"B
C5C

Cc                p    U R                   b  U R                   $ U R                  (       a  gU R                  $ )zEReturn what *exc* was raised from, honouring ``raise ... from None``.N)	__cause____suppress_context____context__)r   s    r;   _next_causer      s,    
}} }}
??r=      )	max_depthc                  [        [        U 5      5        U R                  (       a(  U R                  S:w  a  [	        SU R                   35        U(       d  g[        U 5      1n[        U 5      nSnUb  [        U5      U;  av  XR::  ap  [	        SU-   SUR                  R                   SU 35        UR                  [        U5      5        [        U5      nUS-  nUb  [        U5      U;  a  XR::  a  Mm  gggggg)a  Print a structured report for an SDK error.

``str(exc)`` already carries the error code, HTTP status, request id and --
for API errors -- the request/response detail. Verbose mode additionally
unwinds the cause chain: wrapping an exception is convenient for callers but
otherwise hides the originating failure from whoever has to diagnose it.

The walk is bounded by *max_depth* and skips exceptions already visited, so
a self-referential chain cannot stall the error path.
E9001zSuggestion: Nr   z  zCaused by: : )
r   rO   
suggestion
error_coder   idr   	__class__rb   add)r   verboser   seencausedepths         r;   _report_hub_errorr      s     
#c(O
~~#..G3|CNN+,-sG9DEE

5	 5%:Lu~[)A)A(B"UGLMEE"
	 
5	 5%:L 5
:L 5
r=   c                   [        [        [        R                  S9  [	        5       nUR                  U 5      n[        [        USS5      5      n[        R                  " U(       a  [        R                  O[        R                  SS9  [        USS5      nUc   UR                  [        R                  5        g U" U5      R                  5         g! [         a    [        S	5         g
[          aO  n[#        UR$                  [&        5      (       a  ['        UR$                  5      OUR$                  c  SOSs SnA$ SnAf[(        [*        4 a  n[-        XSS9   SnAgSnAf[.         a  n[-        XSS9   SnAgSnAf[0         a  n[        [3        U5      5         SnAgSnAf[4         a  n[        [3        U5      5         SnAgSnAf[6         a7  n[        SUR8                  R:                   SU 35        U(       a  e  SnAgSnAff = f)z?Console-script entry point referenced by ``[project.scripts]``.)filer   Fz#%(levelname)s %(name)s: %(message)s)levelformatrG   Nr   zInterrupted.   r   r   )r   zUnexpected error: r   )printr   sysstderrr<   
parse_argsboolrp   r}   basicConfigDEBUGINFO
print_helpr[   KeyboardInterruptr   
SystemExit
isinstancecodeintr
   r   r   r	   
ValueErrorrO   NotImplementedErrorr|   r   rb   )argvr8   rZ   r   command_clsr   s         r;   run_cmdr      s   	
,_FT"D74E23G&gmmGLL4
 $
D1K#**%D!!#0 /  n ^ *388S 9 9s388}SXXEU[\]/0 #/ #/ c#h c#h "3==#9#9":"SEBC	sa   9C H'	H0AD:4H:H	EH(	E66HFH)GH-HH__main__)r_   zargparse.ArgumentParserr^   )r   BaseExceptionr_   zBaseException | None)r   r	   r   r   r   r   r_   r`   rU   )r   zSequence[str] | Noner_   r   )Arf   
__future__r   r/   importlib.metadatarv   r}   r   r   collections.abcr    r   	constantsr   errorsr	   r
   r   agentr   baser   r   r   cacher   r   r   deployr   r   r   r   downloadr   loginr   r   mcpr   repor   r   r   r   r    secretr!   uploadr"   r4   ry   r<   r6   r?   r@   rJ   rP   r7   r   r   r   rb   exitrV   r=   r;   <module>r      s    #    
  $  ( B B  ) ) 8 8 L L % .  U U ! !
 !	( -,d,-	.(j ()z )8`& IJ <*Z zHHWY r=   