o
    Ni                     @  sh   d dl mZ d dlZd dlZd dlmZmZmZ G dd deZ	dddZ
dd	 Zd
d ZdddZdS )    )annotationsN)_HelpAction_StoreConstAction_SubParsersActionc                   @  s   e Zd ZdS )NavigationExceptionN)__name__
__module____qualname__ r
   r
   D/home/ubuntu/.local/lib/python3.10/site-packages/sphinxarg/parser.pyr      s    r   c                 C  s   t |tr|dkr| S td|}|pg }t|dkr| S d| vr.dd| d}t||d}| d D ]}d|v rA|d n|d	 }||krV|| t	|||  S q7d
| dd| d}t|)N z\s+r   childrenz.Current parser has no child elements.  (path:  )
identifiernamez/Current parser has no child element with name: z (path: )

isinstancestrresplitlenjoinr   popappendparser_navigate)parser_resultpathcurrent_pathmsgnext_hopchildr   r
   r
   r   r      s,   


r   c                 C  sB   t ||d }|d u rd S t|tsd S t|dkr|| |< d S d S )Nr   )getattrr   r   r   )dataparser
attribname	attribvalr
   r
   r   _try_add_parser_attribute%   s   
r&   c                 C  s,   |   }|j| j| j| jdd |  S )z]
    Use private argparse APIs to get the usage string without
    the 'usage: ' prefix.
    r   )prefix)_get_formatter	add_usageusage_actions_mutually_exclusive_groupsformat_helpstrip)r#   fmtr
   r
   r   _format_usage_without_prefix/   s   r0   c              
   K  s^  |d u rd|    t| | jd}t|| d t|| d |  D ]}t|ts*q"i }|jD ]}|j	||j
< q/i }t }|j D ]\}}	|	|vrOg ||	< qB||	 | || qB|j D ]L\}}	||v rjqa||	 }
| j d| |	_|
s{|n
| dd|
 d||d|	   t|	d	}|
r||d
< t|	|fi | |dg | qaq"d}|dddu rd}|}|dddu rd}g }| jD ]}g }|jD ]}t|trq|j}|d urt|ts|jd thv rt|trd| d}tt||dd|d}||d< |j	pd}tt || }W d    n	1 s%w   Y  |j }|g kr@|j!d u r<|j
gn|j!g}|dgkrGqt|t"rY||rS|nd|d}n||r_|nd|d}|j#rm|j#|d< d|d vry|| qt$|dkrq|j%dkrd|_%|j%dkrd|_%|j%|j&|d}|| qt$|dkr||d< |S )Nr   )r   r*   
bare_usageprogdescriptionepilogr   z (z, r   )r   helpr*   r1   r   r   Tskip_default_valuesFskip_default_const_values'r2   )r2   defaultr9   z==SUPPRESS==)r   r9   r5   choicesr5   r   optionszNamed Argumentszpositional argumentszPositional Arguments)titler3   r;   action_groups)'format_usager.   r0   r2   r&   _get_positional_actionsr   r   _choices_actionsr5   destset_name_parser_mapitemsr   addr   getparse_parser
setdefault_action_groups_group_actionsr   r9   booltyper   dictvars
contextlibsuppress	Exceptionoption_stringsmetavarr   r:   r   r<   r3   )r#   r"   kwargsactionhelpsitemsubsection_aliassubsection_alias_namesr   	subactionsubaliassubdatashow_defaultsshow_defaults_constr=   action_groupoptions_listr9   format_dicthelp_stroptiongroupr
   r
   r   rG   9   s   












rG   )N)
__future__r   rO   r   argparser   r   r   rQ   r   r   r&   r0   rG   r
   r
   r
   r   <module>   s    


