o
    Ni&                     @  sX  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rrddlmZmZmZmZ ddlmZmZ eejgejf Zd	ed
< eejgef Zd	ed< ddlmZ G dd deZ i Z!ded< d-ddZ"G dd dejZ#d.ddZ$d/d0ddZ%d1d"d#Z&d2d'd(Z'd/d3d*d+Z(e)d,kre*e( dS )4a  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	TypeAliasr   _PARSER_SETUP_RUNNER)Protocolc                   @  s&   e Zd ZU ded< ded< ded< dS )_SubcommandModulestrparser_descriptionr   set_up_parserr   runN)__name__
__module____qualname____annotations__ r   r   H/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/_cli/__init__.pyr   0   s   
 r   zdict[str, str]	_COMMANDSreturnIterator[tuple[str, str]]c               	   c  sj    t  D ]-\} }t|}z|j}W n ty&   td|  tjd Y qw | |	ddd fV  qd S )Nz#Failed to load the description for )filez

   r   )
r   items	importlibimport_moduler   AttributeErrorprintsysstderrsplit)commandmodule_namemoduledescriptionr   r   r   _load_subcommand_descriptions:   s   

r0   c                   @  s8   e Zd ZdddZdd	d
ZedddZdddZdS )_RootArgumentParserr    r   c                   s  t ttddtdt | jddtddg}tt  }rQttt	t
|ddid}tt|d	 |dt ttd
dg7 }| fdd|D 7 }|d td| j_| jdd  D ]}dd |jD  }ru|| ||jprd7 }q^|dtddg7 }d|S )NzUsage: z {0} [OPTIONS] <COMMAND> [<ARGS>]
z%  The Sphinx documentation generator.strictTr      z	Commands:c                   s(   g | ]\}}d |d  d | qS )  z <r   ).0command_namecommand_desccommand_max_lengthr   r   
<listcomp>Z   s    z3_RootArgumentParser.format_help.<locals>.<listcomp>Optionsr#   c                 S  s   g | ]
}|j tjkr|qS r   )helpargparseSUPPRESS)r7   actionr   r   r   r<   d   s
     FFor more information, visit https://www.sphinx-doc.org/en/master/man/.)r   r   r	   formatproglistr0   maplennextzipminmaxappend
_optionalstitle_action_groups_group_actions_format_optional_argumentsjoin)selfhelp_fragmentscommandscommand_lengthsargument_group	argumentsr   r:   r   format_helpG   sL   



z_RootArgumentParser.format_helpactionsIterable[argparse.Action]rO   Iterator[str]c              	   c  s    dV  t t|d V  dV  |D ]K}dtdd |jD  }|d dtt |j }|jdkrB|d	| |j|j|j	|j
 7 }|V  dV  |jpLd
  }r]dd | D E d H  qd S )Nr3   :z    c                 s  s    | ]	}|d  dkV  qdS )r#   -Nr   )r7   or   r   r   	<genexpr>       zA_RootArgumentParser._format_optional_arguments.<locals>.<genexpr>r6   , r   r2   rB   c                 s  s    | ]	}d | dV  qdS )z        r3   Nr   )r7   liner   r   r   ra      rb   )r   r   alloption_stringsrS   rG   nargs_format_metavarmetavarchoicesdestr>   strip
splitlines)rT   r[   rO   rA   prefixoptaction_helpr   r   r   rR   w   s"   
z._RootArgumentParser._format_optional_argumentsrg   int | str | Noneri   str | tuple[str, ...] | Nonerj   Iterable[str] | Nonerk   c                 C  s   |d u r|d urdd t| d }n| }| d u r| S | tjkr*d| dS | tjkrHt|dkrBd|d  d|d	  d
S d| dS | tjkrU| d| dS | tjkr\dS | tj	krf| dS d}t
|)N{rc   }[]   r   z [r#   z ...]]z ...]z...z ...zinvalid nargs value)rS   sortedupperr?   OPTIONALZERO_OR_MORErH   ONE_OR_MORE	REMAINDERPARSER
ValueError)rg   ri   rj   rk   msgr   r   r   rh      s(   





z#_RootArgumentParser._format_metavarmessager   c                 C  s"   t jtd| j| td)Nz0{0}: error: {1}
Run '{0} --help' for informationrx   )r)   r*   writer	   rD   rE   
SystemExit)rT   r   r   r   r   error   s   
z_RootArgumentParser.errorN)r    r   )r[   r\   rO   r   r    r]   )
rg   rq   ri   rr   rj   rs   rk   r   r    r   )r   r   r    r   )r   r   r   rZ   rR   staticmethodrh   r   r   r   r   r   r1   F   s    

0r1   c                  C  s   t dtdtdddd} | jdddtjtd	d
 | jddddtjtdd
 | td}|jdddddtdd |jdddddtdd |jddddtdd | jd tjtd!d" | S )#Nsphinxz$   Manage documentation with Sphinx.rC   F)rE   r/   epilogadd_helpallow_abbrev-V	--version
store_truezShow the version and exit.)rA   defaultr>   z-hz-?z--helpzShow this message and exit.Loggingz-vz	--verbosecount	verbosityr   z$Increase verbosity (can be repeated))rA   rk   r   r>   z-qz--quietstore_constzOnly print errors and warnings.)rA   rk   constr>   z--silentzNo output at allCOMMANDz	<command>)rg   ri   )r1   r	   add_argumentr?   r@   add_argument_groupr~   )parserlog_controlr   r   r   _create_parser   sl   	
r   r   argvSequence[str]tuple[str, Sequence[str]]c                 C  s   t  }|| }|jpd^}}| }t rt  nt  d|v s(ddh|r<ddlm	} t
jd| d tdd	|v sD|d	krPt
j|  td|tvrdt
jtd
|d td||fS )N)r>   versionr   r   r   )__display_version__sphinx r3   r>   zsphinx: z/ is not a sphinx command. See 'sphinx --help'.
rx   )r   
parse_argsr   lowerr   r   r   intersectionr   r   r)   r*   r   r   rZ   r   r	   )r   r   argsr8   command_argvr   r   r   r   _parse_command   s,   

r   r8   r   "tuple[str, _PARSER_SETUP, _RUNNER]c                 C  sH   z	t t|  }W n ty   d| d}t|d w |j|j|jfS )Nzinvalid command name .)r%   r&   r   KeyErrorr   r   r   r   )r8   r.   r   r   r   r   _load_subcommand  s   
r   r/   parser_setupargparse.ArgumentParserc                 C  s"   t jd|  |t jdd}||S )Nr   F)rE   r/   formatter_classr   )r?   ArgumentParserRawDescriptionHelpFormatter)r8   r/   r   r   r   r   r   _create_sub_parser  s   r   intc          	   
   C  s   t t jd t  | ptjdd  } zt| \}}t|\}}}t|||}|	|}||W S  t
yE } z	|jW  Y d }~S d }~w ttfyP   Y dS w )NrB   r#   rx   )locale	setlocaleLC_ALLr
   r)   r   r   r   r   r   r   code	ExceptionKeyboardInterrupt)	r   cmd_namecmd_argvcmd_descriptionr   runner
cmd_parsercmd_argsexcr   r   r   r   *  s   

r   __main__)r    r!   )r    r1   )r   )r   r   r    r   )r8   r   r    r   )r8   r   r/   r   r   r   r    r   )r   r   r    r   )+__doc__
__future__r   r?   r%   r   r)   typingr   sphinx._cli.util.colourr   r   r   r   r   sphinx.localer	   r
   collections.abcr   r   r   r   r   r   r   r   r   	Namespacer   r   r   r   r   r0   r1   r   r   r   r   r   r   r   r   r   r   r   <module>   s:    

m<
$
	
