
    ~Ti&                    t   U d Z ddlmZ ddlZddlZddlZddlZddlmZ ddl	m
Z
mZmZmZmZ ddlmZmZ er1ddlmZmZmZmZ ddlmZ d	dd
 fZddd fZddlmZ  G d de      Zi Zded<   ddZ G d dej>                        Z ddZ!dddZ"ddZ#	 	 	 	 	 	 	 	 d dZ$dd!dZ%e&dk(  r e' e%             y)"a  Base 'sphinx' command.

Subcommands are loaded lazily from the ``_COMMANDS`` table for performance.

All subcommand modules must define three attributes:

- ``parser_description``, a description of the subcommand. The first paragraph
  is taken as the short description for the command.
- ``set_up_parser``, a callable taking and returning an ``ArgumentParser``. This
  function is responsible for adding options and arguments to the subcommand's
  parser.
- ``run``, a callable taking parsed arguments and returning an exit code. This
  function is responsible for running the main body of the subcommand and
  returning the exit status.

The entire ``sphinx._cli`` namespace is private, only the command line interface
has backwards-compatibility guarantees.
    )annotationsN)TYPE_CHECKING)bolddisable_colourenable_colourterminal_supports_colour	underline)__init_console)CallableIterableIteratorSequence)NoReturn_PARSER_SETUPc                 R    t         t        j                  gt        j                  f   S N)r   argparseArgumentParser     G/home/agent/.local/lib/python3.12/site-packages/sphinx/_cli/__init__.pyr   r   )   s     8#:#:";X=T=T"TUUr   _RUNNERc                 >    t         t        j                  gt        f   S r   )r   r   	Namespaceintr   r   r   r   r   *   s    8X//0#566r   )Protocolc                  ,    e Zd ZU ded<   ded<   ded<   y)_SubcommandModulestrparser_descriptionr   set_up_parserr   runN)__name__
__module____qualname____annotations__r   r   r   r   r   .   s    $$r   r   zdict[str, str]	_COMMANDSc               #    K   t         j                         D ]?  \  } }t        j                  |      }	 |j                  }| |j                  d      d   f A y # t        $ r! t        d|  t        j                         Y lw xY ww)Nz

r   z#Failed to load the description for )file)
r(   items	importlibimport_moduler!   	partitionAttributeErrorprintsysstderr)commandmodule_namemoduledescriptions       r   _load_subcommand_descriptionsr7   8   s      ) 1 <$-$;$;K$H	< 33K
 ;008;;;<  	T7yA

S	Ts'   0BAB'BBBBc                  V    e Zd ZddZ	 	 	 	 	 	 ddZe	 	 	 	 	 	 	 	 	 	 dd       Zd	dZy)
_RootArgumentParserc           
     j   t        t        t        d                  dt        d      j                  t        | j                              ddt        d      dg}t        t                     x}rt        t        t        t        |ddid            }t        t        |      d	      }|dt        t        t        d
                  dgz  }||D cg c]  \  }}d|d| dd|  c}}z  }|j                  d       t        d      | j                  _        | j                   dd  D ]_  }|j"                  D cg c]!  }|j$                  t&        j(                  k7  r|# c}x}	s=|| j+                  |	|j                  xs d      z  }a |dt        d      dgz  }dj-                  |      S c c}}w c c}w )NzUsage: z {0} [OPTIONS] <COMMAND> [<ARGS>]
z%  The Sphinx documentation generator.strictTr      z	Commands:  z < Options   FFor more information, visit https://www.sphinx-doc.org/en/master/man/.)r   r	   r
   formatproglistr7   maplennextzipminmaxappend
_optionalstitle_action_groups_group_actionshelpr   SUPPRESS_format_optional_argumentsjoin)
selfhelp_fragmentscommandscommand_lengthscommand_max_lengthcommand_namecommand_descargument_groupaction	argumentss
             r   format_helpz_RootArgumentParser.format_helpE   s   2h<()1299$tyy/J67%
 9;<<8<!#tC,G$,G'LMO!$S%92!>Yr+/0 N
 2:.L, \"%7$8 !89L>J N !!$' !#9"11!"5 		N -;;;;("3"33  y 
 $"A"A"((.B# 		 	X 
 	
 ww~&&7s   F*7&F0c           	   #  .  K   d t        t        |dz                d |D ]  }dt        d |j                  D              z  }|dz   dj	                  t        t         |j                              z   }|j                  dk7  rB|d| j                  |j                  |j                  |j                  |j                        z   z  }| d |j                  xs d	j                         x}sd
 |j                         D        E d {     y 7 w)Nr<   :z    c              3  ,   K   | ]  }|d    dk(    yw)rB   -Nr   ).0os     r   	<genexpr>zA_RootArgumentParser._format_optional_arguments.<locals>.<genexpr>   s     !M!!A$#+!Ms   r?   , r   r;   r@   c              3  (   K   | ]
  }d | d  yw)z        r<   Nr   )re   lines     r   rg   zA_RootArgumentParser._format_optional_arguments.<locals>.<genexpr>   s     UDhtfB/Us   )r   r	   alloption_stringsrU   rG   nargs_format_metavarmetavarchoicesdestrR   strip
splitlines)rV   actionsrO   r^   prefixoptaction_helps          r   rT   z._RootArgumentParser._format_optional_argumentsu   s     
 
9US[)**
 
	VFc!Mv7L7L!MMMF4-$))Cf6K6K,L"MMC||q sT11LL&..&..&++   IJ%{{0b7799{9UK<R<R<TUUU
	V Vs   C.D1DDDc                   |3|!ddj                  t        |            z   dz   }n|j                         }| | S | t        j                  k(  rd| dS | t        j
                  k(  r#t        |      dk(  rd|d    d|d	    d
S d| dS | t        j                  k(  r| d| dS | t        j                  k(  ry| t        j                  k(  r| dS d}t        |      )N{rh   }[]   r   z [rB   z ...]]z ...]z...z ...zinvalid nargs value)rU   sortedupperr   OPTIONALZERO_OR_MORErH   ONE_OR_MORE	REMAINDERPARSER
ValueError)rm   ro   rp   rq   msgs        r   rn   z#_RootArgumentParser._format_metavar   s     ?"		&/ ::S@**,=Yh'''wiq>!h+++7|q 71:,bF;;7)5))h***Yb	//h(((hoo%Yd###or   c                    t        d      }t        j                  j                  |j	                  | j
                  |             t        d      )Nz0{0}: error: {1}
Run '{0} --help' for informationr}   )r
   r1   r2   writerD   rE   
SystemExit)rV   messager   s      r   errorz_RootArgumentParser.error   s8    DE

DIIw78mr   N)returnr    )rt   zIterable[argparse.Action]rO   r    r   zIterator[str])
rm   zint | str | Nonero   zstr | tuple[str, ...] | Nonerp   zIterable[str] | Nonerq   r    r   r    )r   r    r   r   )r$   r%   r&   r`   rT   staticmethodrn   r   r   r   r   r9   r9   D   st    .'`V*V V 
	V* - & 	
 
 :r   r9   c            
     H   t        dt        d      t        d      dd      } | j                  dddt        j                  t        d	      
       | j                  ddddt        j                  t        d      
       | j                  t        d            }|j                  dddddt        d             |j                  dddddt        d             |j                  ddddt        d             | j                  d t        j                  t        d!      "       | S )#Nsphinxz$   Manage documentation with Sphinx.rC   F)rE   r6   epilogadd_helpallow_abbrev-V	--version
store_truezShow the version and exit.)r^   defaultrR   z-hz-?z--helpzShow this message and exit.Loggingz-vz	--verbosecount	verbosityr   z$Increase verbosity (can be repeated))r^   rq   r   rR   z-qz--quietstore_constzOnly print errors and warnings.)r^   rq   constrR   z--silentzNo output at allCOMMANDz	<command>)rm   ro   )r9   r
   add_argumentr   rS   add_argument_groupr   )parserlog_controls     r   _create_parserr      sU    =>T
 F !!,-   !!-.   ++ByM:K67   12   "#     ;  
 Mr   c                X   t               }|j                  |       }|j                  xs d^}}|j                         }t	               rt                n
t                d|v sddhj                  |      r4ddlm	} t        j                  j                  d| d       t        d      d	|v s|d	k(  r8t        j                  j                  |j                                t        d      |t        vr7t        j                  j                  t!        d
|d             t        d      ||fS )N)rR   versionr   r   r   )__display_version__sphinx r<   rR   zsphinx: z/ is not a sphinx command. See 'sphinx --help'.
r}   )r   
parse_argsr   lowerr   r   r   intersectionr   r   r1   r2   r   r   r`   r(   r
   )argvr   argsr[   command_argvr   s         r   _parse_commandr      s   FT"D"&,,";)L<%%'L! DT;/<<\J.

7#6"7r:;m ~/

++-.m9$

<* +) )	
 m%%r   c                    	 t        j                  t        |          }|j
                  |j                  |j                  fS # t        $ r d| d}t	        |      d w xY w)Nzinvalid command name .)r,   r-   r(   KeyErrorr   r!   r"   r#   )r[   r5   r   s      r   _load_subcommandr     sg    ($-$;$;Il<S$T $$f&:&:FJJFF  (%l%5Q7o4'(s   A Ac                f    t        j                  d|  |t         j                  d      } ||      S )Nr   F)rE   r6   formatter_classr   )r   r   RawDescriptionHelpFormatter)r[   r6   parser_setupr   s       r   _create_sub_parserr     s:    
 $$|n% <<	F r   c               x   t        j                  t         j                  d       t                | xs t        j
                  dd  } 	 t        |       \  }}t        |      \  }}}t        |||      }|j                  |      } ||      S # t        $ r}|j                  cY d }~S d }~wt        t        f$ r Y yw xY w)Nr@   rB   r}   )locale	setlocaleLC_ALLr   r1   r   r   r   r   r   r   code	ExceptionKeyboardInterrupt)	r   cmd_namecmd_argvcmd_descriptionr"   runner
cmd_parsercmd_argsexcs	            r   r#   r#   %  s    
V]]B'N388AB<D	+D1(1A(1K.'/=Q
((2h xx() s%   AB
 
	B9B$B9$B98B9__main__)r   zIterator[tuple[str, str]])r   r9   )r   )r   Sequence[str]r   ztuple[str, Sequence[str]])r[   r    r   z"tuple[str, _PARSER_SETUP, _RUNNER])r[   r    r6   r    r   r   r   zargparse.ArgumentParser)r   r   r   r   )(__doc__
__future__r   r   r,   r   r1   typingr   sphinx._cli.util.colourr   r   r   r   r	   sphinx.localer
   r   collections.abcr   r   r   r   r   r   r   r   r   r(   r'   r7   r   r9   r   r   r   r   r#   r$   r   r   r   r   <module>r      s   & #    
    +FFU6H  	> 	<g(11 gT9x!&HG       	 " z
SU
 r   