
    dafN                       	 d Z g dZddlZddlZddlZddlZddl	m	Z
mZ dZdZdZdZd	Zd
ZdZ G d de      Zd Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zd Z G d de      Z G d de      Z G d de      Z e       Z  G d  d!e      Z! G d" d#e      Z" G d$ d%e      Z# G d& d'e#      Z$ G d( d)e#      Z% G d* d+e      Z& G d, d-e      Z' G d. d/e      Z( G d0 d1e      Z) G d2 d3e      Z* G d4 d5e      Z+ G d6 d7e&      Z, G d8 d9e      Z- G d: d;e      Z. G d< d=e      Z/ G d> d?e/      Z0 G d@ dAe0      Z1 G dB dCee/      Z2y)Dz1.1)ArgumentParserArgumentErrorArgumentTypeErrorBooleanOptionalActionFileTypeHelpFormatterArgumentDefaultsHelpFormatterRawDescriptionHelpFormatterRawTextHelpFormatterMetavarTypeHelpFormatter	NamespaceActionONE_OR_MOREOPTIONALPARSER	REMAINDERSUPPRESSZERO_OR_MORE    N)gettextngettextz==SUPPRESS==?*+zA......_unrecognized_argsc                        e Zd Z	 d Zd Zd Zy)_AttributeHolderc                    t        |       j                  }g }i }| j                         D ]  }|j                  t	        |              | j                         D ]1  \  }}|j                         r|j                  |d|       -|||<   3 |r|j                  dt	        |      z         |ddj                  |      dS )N=z**%s(, ))type__name__	_get_argsappendrepr_get_kwargsisidentifierjoin)self	type_namearg_strings	star_argsargnamevalues          #/root/Python-3.12.4/Lib/argparse.py__repr__z_AttributeHolder.__repr__v   s    J''		>># 	*CtCy)	*++- 	(KD%  """dE#:;"'	$		(
 vY78$dii&<==    c                 H    t        | j                  j                               S N)list__dict__itemsr+   s    r2   r(   z_AttributeHolder._get_kwargs   s    DMM'')**r4   c                     g S r6    r:   s    r2   r%   z_AttributeHolder._get_args   s    	r4   N)r$   
__module____qualname__r3   r(   r%   r<   r4   r2   r   r   m   s    >+r4   r   c                 `    | g S t        |       t        u r| d d  S dd l}|j                  |       S Nr   )r#   r7   copy)r9   rA   s     r2   _copy_itemsrB      s5    }	 E{dQx99Ur4   c                       e Zd Z	 	 	 	 ddZd Zd Z G d de      Zd Zd Z	d	 Z
d
 ZddZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy) r   Nc                    |#dd l }|j                         j                  }|dz  }|| _        || _        t        |t        |dz
  |dz              | _        || _        d| _	        d| _
        d| _        | j                  | d       | _        | j                  | _        t        j                   dt        j"                        | _        t        j                   d      | _        y )Nr         z\s+z\n\n\n+)shutilget_terminal_sizecolumns_prog_indent_incrementminmax_max_help_position_width_current_indent_level_action_max_length_Section_root_section_current_section_recompileASCII_whitespace_matcher_long_break_matcher)r+   progindent_incrementmax_help_positionwidthrG   s         r2   __init__zHelpFormatter.__init__   s     =,,.66EQJE
!1"%&7&)%"*6F6J&K#M "#!]]46 $ 2 2#&;;vsyy#A #&;;z#: r4   c                 l    | xj                   | j                  z  c_         | xj                  dz  c_        y N   rP   rK   rQ   r:   s    r2   _indentzHelpFormatter._indent   s'     6 66qr4   c                 l    | xj                   | j                  z  c_         | xj                  dz  c_        y ra   rc   r:   s    r2   _dedentzHelpFormatter._dedent   s'     6 66qr4   c                       e Zd ZddZd Zy)HelpFormatter._SectionNc                 <    || _         || _        || _        g | _        y r6   )	formatterparentheadingr9   )r+   rj   rk   rl   s       r2   r_   zHelpFormatter._Section.__init__   s    &DN DK"DLDJr4   c           	         | j                   | j                  j                          | j                  j                  } || j                  D cg c]
  \  }} ||  c}}      }| j                   | j                  j                          |sy| j                  t        urM| j                  A| j                  j                  }t        d      t        | j                        z  }d|d|fz  }nd} |d||dg      S c c}}w )N z%(heading)s:)rl   %*s%s

)rk   rj   rd   _join_partsr9   rf   rl   r   rP   _dict)r+   r*   funcargs	item_helpcurrent_indentheading_textrl   s           r2   format_helpz"HelpFormatter._Section.format_help   s    {{&&&(>>--DDJJGjdDdDkGHI{{&&&(  ||8+0H!%!?!? 043MM#~r<&HH w	4899# Hs   C;
r6   )r$   r=   r>   r_   ry   r<   r4   r2   rS   rh      s    		:r4   rS   c                 R    | j                   j                  j                  ||f       y r6   )rU   r9   r&   )r+   rt   ru   s      r2   	_add_itemzHelpFormatter._add_item   s     ##**D$<8r4   c                     | j                          | j                  | | j                  |      }| j                  |j                  g        || _        y r6   )rd   rS   rU   r{   ry   )r+   rl   sections      r2   start_sectionzHelpFormatter.start_section   s?    --d&;&;WEw**B/ 'r4   c                 Z    | j                   j                  | _         | j                          y r6   )rU   rk   rf   r:   s    r2   end_sectionzHelpFormatter.end_section   s     $ 5 5 < <r4   c                 V    |t         ur!|| j                  | j                  |g       y y y r6   )r   r{   _format_text)r+   texts     r2   add_textzHelpFormatter.add_text   s-    xD$4NN4,,tf5 %5r4   c                 Z    |t         ur#||||f}| j                  | j                  |       y y r6   )r   r{   _format_usage)r+   usageactionsgroupsprefixru   s         r2   	add_usagezHelpFormatter.add_usage   s1     '661DNN4--t4 !r4   c                 n   |j                   t        ur| j                  } ||      g}| j                  |      D ]  }|j	                   ||              t        t        t        |            }|| j                  z   }t        | j                  |      | _	        | j                  | j                  |g       y y r6   )helpr   _format_action_invocation_iter_indented_subactionsr&   rM   maplenrP   rR   r{   _format_action)r+   actionget_invocationinvocations	subactioninvocation_lengthaction_lengths          r2   add_argumentzHelpFormatter.add_argument  s    ;;h& ";;N)&12K!;;FC >	"">)#<=> !$C[$9 :-0D0DDM&)$*A*A*7'9D# NN4..9 'r4   c                 4    |D ]  }| j                  |        y r6   )r   )r+   r   r   s      r2   add_argumentszHelpFormatter.add_arguments  s     	&Ff%	&r4   c                     | j                   j                         }|r0| j                  j                  d|      }|j	                  d      dz   }|S )N

rp   )rT   ry   rZ   substrip)r+   r   s     r2   ry   zHelpFormatter.format_help  sI    !!--/++//=D::d#d*Dr4   c                 ^    dj                  |D cg c]  }|r
|t        ur| c}      S c c}w )Nrn   )r*   r   )r+   part_stringsparts      r2   rq   zHelpFormatter._join_parts%  s8    ww$0: D$8  : ; 	; :s   *c                    |t        d      }||t        | j                        z  }n||sdt        | j                        z  }n|dt        | j                        z  }g }g }|D ]1  }|j                  r|j	                  |       !|j	                  |       3 | j
                  }	 |	||z   |      }
dj                  ||
fD cg c]  }|s|	 c}      }| j                  | j                  z
  t        |      t        |      z   kD  r1d} |	||      } |	||      }t        j                  ||      }t        j                  ||      }dfd	}t        |      t        |      z   dz  k  r[dt        |      t        |      z   dz   z  }|r' ||g|z   ||      }|j                   |||             nw|r ||g|z   ||      }nf|g}nbdt        |      z  }||z   } |||      }t        |      dkD  r2g }|j                   |||             |j                   |||             |g|z   }d	j                  |      }||d
S c c}w )Nzusage: r[   z%(prog)s z%\(.*?\)+(?=\s|$)|\[.*?\]+(?=\s|$)|\S+c                    g }g }t        |      }|t        |      dz
  }n|dz
  }| D ]d  }|dz   t        |      z   kD  r,|r*|j                  |dj                  |      z          g }|dz
  }|j                  |       |t        |      dz   z  }f |r#|j                  |dj                  |      z          ||d   |d  |d<   |S )Nrb   r   r   )r   r&   r*   )	partsindentr   lineslineindent_lengthline_lenr   
text_widths	           r2   	get_linesz.HelpFormatter._format_usage.<locals>.get_linesZ  s    ED$'KM)#&v;?#01#4 % 2#a<#d)3j@T!LL#((4.)@A#%D'4q'8HD) CIM12 Vchhtn%<=)#(8MN#;a Lr4   g      ?rb   rp   r   r6   )rr   rs   rJ   option_stringsr&   _format_actions_usager*   rO   rP   r   rV   findallextend)r+   r   r   r   r   r[   	optionalspositionalsr   formataction_usagespart_regexp	opt_usage	pos_usage	opt_parts	pos_partsr   r   r   r   r   s                        @r2   r   zHelpFormatter._format_usage*  sa   >y\F Ddjj11E ]74::!66E ]$** 55D IK! /(($$V,&&v.	/ //F!)k"96BLHH$)=CAaCDE t';';;J6{SZ'*4 
 #9f5	";7	KKY?	KKY?	
!, v;T*dZ.?? CK#d)$;a$?@F  )4&9*<ff MYy&%AB" )4&9*<ff M!% !3v;.F%	1E%eV4E5zA~ "Yy&%ABYy&%AB!FUNE 		%( $U++G Ds   
I	I	c                    t               }i }|D ]4  }|j                  st        d|       	 |j                  |j                  d         }t	        |j                        }||z   }||| |j                  k(  sjd}	|j                  D ]+  }
|j                  |
       |
j                  t        u s'|	dz  }	- ||	z
  }|s|j                  s/||v r||xx   dz  cc<   nd||<   ||v r||xx   dz  cc<   n9d||<   n3|dkD  r.||v r||xx   dz  cc<   nd||<   ||v r||xx   d	z  cc<   nd	||<   t        |dz   |      D ]  }d
||<   	 7 g }t        |      D ]U  \  }}
|
j                  t        u rd|j                  d        |j                  |      d
k(  r|j                  |       P|j                  |dz         d
k(  sh|j                  |dz          }|
j                  sN| j                  |
      }| j!                  |
|      }|
|v r|d   dk(  r|d   dk(  r|dd }|j                  |       |
j                  d   }|
j"                  dk(  r|
j%                         }n*| j'                  |
      }| j!                  |
|      }|d|}|
j                  s	|
|vrd|z  }|j                  |       X t)        |d      D ]  }||   g|||  dj+                  |D cg c]  }||	 c}      }d}d}t-        j.                  d|z  d|      }t-        j.                  d|z  d|      }t-        j.                  |d|d|      }|j1                         }|S # t        $ r Y Mw xY wc c}w )Nzempty group r   rb   z [[]z (r    r"   |r   [%s]T)reversez[\[(]z[\])]z(%s) z\1 (%s)z *rn   )set_group_actions
ValueErrorindexr   addr   r   requiredrange	enumerater&   getpopr   #_get_default_metavar_for_positional_format_argsnargsformat_usage!_get_default_metavar_for_optionalsortedr*   rV   r   r   )r+   r   r   group_actionsinsertsgroupstartgroup_action_countendsuppressed_actions_countr   exposed_actions_countir   defaultr   option_stringargs_stringitemr   opencloses                         r2   r   z#HelpFormatter._format_actions_usage  s    *	)E'' <w!788&)e&:&:1&=> &))=)=%>"005%)=)==/0,"'"6"6 :%))&1!;;(2494:
 -?AY,Y)0  >> G+#ENd2N-0GEN'>#CLC/L+.GCL.2 G+#ENd2N-0GEN'>#CLC/L+.GCL"519c2 )%(
)S*	)Z "7+ -	#IAv {{h&T";;q>S(KKN[[Q'3.KKA& **BB6J((9 ]*Aw#~$r(c/#Abz T" !' 5 5a 8 <<1$!..0D
 #DDVLG"&"3"3FG"DK&3[AD 6+F!D=D T"[-	#` . 	&A!!*E!AJ	& xx%D$43CDE wwx$t4wwx%'5wwD%0#t<zz| O  x Es   MM M 	MMc                     d|v r|t        | j                        z  }t        | j                  | j                  z
  d      }d| j                  z  }| j                  |||      dz   S )Nz%(prog)r      r   r   )rs   rJ   rM   rO   rP   
_fill_text)r+   r   r   r   s       r2   r   zHelpFormatter._format_text  s`    $DJJ//Dt';';;R@
t+++tZ86AAr4   c                 `   t        | j                  dz   | j                        }t        | j                  |z
  d      }|| j
                  z
  dz
  }| j                  |      }|j                  s| j
                  d|f}d|z  }n<t        |      |k  r| j
                  d||f}d|z  }d}n| j
                  d|f}d|z  }|}|g}|j                  r{|j                  j                         ra| j                  |      }	|	rp| j                  |	|      }
|j                  dd|
d   fz         |
dd  D ]  }|j                  d|d|fz          n"|j                  d      s|j                  d       | j                  |      D ]"  }|j                  | j                  |             $ | j!                  |      S )	NrE   r   rn   ro   z	%*s%-*s  r   rb   rp   )rL   rR   rN   rM   rO   rP   r   r   r   r   _expand_help_split_linesr&   endswithr   r   rq   )r+   r   help_position
help_widthaction_widthaction_headertupindent_firstr   	help_text
help_linesr   r   s                r2   r   zHelpFormatter._format_action  s   D33a7 335}4b9
$t';';;a?66v> {{&&M9C%OM </&&L-GC'#-ML &&M9C%OM(L  ;;6;;,,.))&1I!..y*E
Y,JqM)JJK&qrN HDLLmR-F!FGH ''-LL 77? 	9ILL,,Y78	9 &&r4   c                    |j                   s-| j                  |      } | j                  ||      d      \  }|S g }|j                  dk(  r|j	                  |j                          nJ| j                  |      }| j                  ||      }|j                   D ]  }|j                  |d|        dj                  |      S )Nrb   r   r   r!   )	r   r   _metavar_formatterr   r   r   r   r&   r*   )r+   r   r   metavarr   r   r   s          r2   r   z'HelpFormatter._format_action_invocation5  s    $$>>vFG?t..vw?BHGN E ||q V223
 @@H"//@%+%:%: IMLLM;!GHI 99U##r4   c                     |j                   |j                   nE|j                  7|j                  D cg c]  }t        |       }}ddj                  |      z  n|fd}|S c c}w )Nz{%s},c                 4    t        t              rS f| z  S r6   )
isinstancetuple)
tuple_sizeresults    r2   r   z0HelpFormatter._metavar_formatter.<locals>.formatV  s    &%(zJ..r4   )r   choicesstrr*   )r+   r   default_metavarchoicechoice_strsr   r   s         @r2   r   z HelpFormatter._metavar_formatterM  se    >>%^^F^^'5;^^D63v;DKDchh{33F$F	/
  Es   A'c                    | j                  ||      }|j                  d |d      z  }|S |j                  t        k(  rd |d      z  }|S |j                  t        k(  r$ |d      }t	        |      dk(  rd|z  }|S d|z  }|S |j                  t
        k(  rd |d      z  }|S |j                  t        k(  rd}|S |j                  t        k(  rd	 |d      z  }|S |j                  t        k(  rd
}|S 	 t        |j                        D cg c]  }d }}dj                  |       ||j                        z  }|S c c}w # t        $ r t        d      d w xY w)Nz%srb   r   rE   z[%s [%s ...]]z[%s ...]z%s [%s ...]r   z%s ...rn   zinvalid nargs valuer   )r   r   r   r   r   r   r   r   r   r   	TypeErrorr   r*   )r+   r   r   get_metavarr   r   rr   formatss           r2   r   zHelpFormatter._format_args]  s   --foF<<KN*F. - \\X%k!n,F* ) \\\)!!nG7|q (72"  $g-  \\[("[^3F  \\Y&F  \\V#A.F  \\X%F B).v||)<=A4== XXg&V\\)BBF	 > B !67TABs   2D? 		D:D? :D? ?Ec                    t        t        |      | j                        }t        |      D ]  }||   t        u s||=  t        |      D ]$  }t        ||   d      s||   j                  ||<   & |j                  d      0dj                  |d   D cg c]  }t        |       c}      }||d<   | j                  |      |z  S c c}w )Nr   r$   r   r!   )rs   varsrJ   r7   r   hasattrr$   r   r*   r   _get_help_string)r+   r   paramsr0   cchoices_strs         r2   r   zHelpFormatter._expand_helpy  s    d6l4L 	!Dd|x'4L	! L 	5Dvd|Z0%d|44t	5 ::i ,))VI5F$GSV$GHK +F9$$V,v55 %Hs   Cc              #      K   	 |j                   }| j                           |       E d {    | j                          y 7 # t        $ r Y y w xY wwr6   )_get_subactionsrd   rf   AttributeError)r+   r   get_subactionss      r2   r   z'HelpFormatter._iter_indented_subactions  sN     	#33N LLN%'''LLN (	  		s1   AA AA A	AAAAc                     | j                   j                  d|      j                         }dd l}|j	                  ||      S )Nr   r   )rY   r   r   textwrapwrap)r+   r   r^   r  s       r2   r   zHelpFormatter._split_lines  s9    ''++C6<<> 	}}T5))r4   c                     | j                   j                  d|      j                         }dd l}|j	                  ||||      S )Nr   r   )initial_indentsubsequent_indent)rY   r   r   r  fill)r+   r   r^   r   r  s        r2   r   zHelpFormatter._fill_text  sF    ''++C6<<>}}T5,2/5  7 	7r4   c                     |j                   S r6   )r   r+   r   s     r2   r	  zHelpFormatter._get_help_string      {{r4   c                 6    |j                   j                         S r6   )destupperr  s     r2   r   z/HelpFormatter._get_default_metavar_for_optional  s    {{  ""r4   c                     |j                   S r6   )r  r  s     r2   r   z1HelpFormatter._get_default_metavar_for_positional  r  r4   )rE      Nr6   )r$   r=   r>   r_   rd   rf   objectrS   r{   r~   r   r   r   r   r   ry   rq   r   r   r   r   r   r   r   r   r   r   r   r	  r   r   r<   r4   r2   r   r      s     #$#%	;>
:6 :@9(65
:$&;
_,BqfB.'`$0 86*7#r4   r   c                       e Zd Z	 d Zy)r	   c                 X    dj                  fd|j                  d      D              S )Nrn   c              3   (   K   | ]	  }|z     y wr6   r<   ).0r   r   s     r2   	<genexpr>z9RawDescriptionHelpFormatter._fill_text.<locals>.<genexpr>  s     Pv}Ps   T)keepends)r*   
splitlines)r+   r   r^   r   s      `r2   r   z&RawDescriptionHelpFormatter._fill_text  s#    wwP$1OPPPr4   N)r$   r=   r>   r   r<   r4   r2   r	   r	     s    Qr4   r	   c                       e Zd Z	 d Zy)r
   c                 "    |j                         S r6   )r'  )r+   r   r^   s      r2   r   z!RawTextHelpFormatter._split_lines  s      r4   N)r$   r=   r>   r   r<   r4   r2   r
   r
     s    !r4   r
   c                       e Zd Z	 d Zy)r   c                     	 |j                   }|d}d|vrF|j                  t        ur4t        t        g}|j
                  s|j                  |v r|t        d      z  }|S )Nrn   z
%(default)z (default: %(default)s))r   r   r   r   r   r   r   rr   )r+   r   r   defaulting_nargss       r2   r	  z.ArgumentDefaultsHelpFormatter._get_help_string  se    	 {{<Dt#~~X-$,l#; ((FLL<L,LA788Dr4   N)r$   r=   r>   r	  r<   r4   r2   r   r     s    r4   r   c                       e Zd Z	 d Zd Zy)r   c                 .    |j                   j                  S r6   r#   r$   r  s     r2   r   z:MetavarTypeHelpFormatter._get_default_metavar_for_optional      {{###r4   c                 .    |j                   j                  S r6   r/  r  s     r2   r   z<MetavarTypeHelpFormatter._get_default_metavar_for_positional  r0  r4   N)r$   r=   r>   r   r   r<   r4   r2   r   r     s    $$r4   r   c                 2   | y | j                   rdj                  | j                         S | j                  d t        fvr| j                  S | j                  d t        fvr| j                  S | j
                  r!ddj                  | j
                        z   dz   S y )N/{r   })r   r*   r   r   r  r   )arguments    r2   _get_action_namer7    s    		 	 xx//00			$!1	1	tX.	.}}			SXXh..//#55r4   c                       e Zd Z	 d Zd Zy)r   c                 2    t        |      | _        || _        y r6   )r7  argument_namemessage)r+   r6  r;  s      r2   r_   zArgumentError.__init__  s    -h7r4   c                 ~    | j                   d}nt        d      }|t        | j                  | j                         z  S )Nz%(message)sz'argument %(argument_name)s: %(message)s)r;  r:  )r:  rr   rs   r;  )r+   r   s     r2   __str__zArgumentError.__str__  sA    %"F@AFT\\+/+=+=? ? 	?r4   N)r$   r=   r>   r_   r=  r<   r4   r2   r   r     s    ?r4   r   c                       e Zd Z	 y)r   N)r$   r=   r>   r<   r4   r2   r   r     s    Jr4   r   c                   :    e Zd Z	 	 	 	 	 	 	 	 	 ddZd Zd ZddZy)r   Nc                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        y r6   
r   r  r   constr   r#   r   r   r   r   )r+   r   r  r   rB  r   r#   r   r   r   r   s              r2   r_   zAction.__init__M  sK     -	

	 	r4   c                 L    g d}|D cg c]  }|t        | |      f c}S c c}w )NrA  getattrr+   namesr0   s      r2   r(   zAction._get_kwargsc  s+    
 9>>wtT*+>>>   !c                      | j                   d   S r@   )r   r:   s    r2   r   zAction.format_usager  s    ""1%%r4   c                 *    t        t        d            )Nz.__call__() not defined)NotImplementedErrorrr   r+   parser	namespacevaluesr   s        r2   __call__zAction.__call__u  s    !!$=">??r4   NNNNNFNNr6   )r$   r=   r>   r_   r(   r   rP  r<   r4   r2   r   r     s7    0j ,?&@r4   r   c                   :     e Zd Zdeeddef fd	ZddZd Z xZS )r   NFc	                 b   g }	|D ]>  }
|	j                  |
       |
j                  d      s&d|
dd  z   }
|	j                  |
       @ dD ].  }t               |   t        ust	        j
                  |dd       0 |t        u rd }|t        u rd }|t        u rd }t        |   |	|d||||||		       y )
N----no-rE   )r#   r   r   zP{name!r} is deprecated as of Python 3.12 and will be removed in Python {remove}.)      )remover   )	r   r  r   r   r#   r   r   r   r   )r&   
startswithlocals_deprecated_defaultwarnings_deprecatedsuperr_   )r+   r   r  r   r#   r   r   r   r   _option_stringsr   
field_name	__class__s               r2   r_   zBooleanOptionalAction.__init__}  s     + 	6M""=1''- '-*; ;&&}5	6 9 	$Jx
#+>>$$2"	$	$ &&D))G))G* 	 		r4   c                 p    || j                   v r(t        || j                  |j                  d              y y )NrU  )r   setattrr  rY  rL  s        r2   rP  zBooleanOptionalAction.__call__  s3    D///Ityym.F.Fw.O*OP 0r4   c                 8    dj                  | j                        S )Nz | )r*   r   r:   s    r2   r   z"BooleanOptionalAction.format_usage  s    zz$--..r4   r6   )r$   r=   r>   r[  r_   rP  r   __classcell__ra  s   @r2   r   r   |  s(     ),,-`Q/r4   r   c                   8     e Zd Z	 	 	 	 	 	 	 	 d fd	ZddZ xZS )_StoreActionc                     |dk(  rt        d      ||t        k7  rt        dt        z        t        t        |   |||||||||	|

       y )Nr   znargs for store actions must be != 0; if you have nothing to store, actions such as store true or store const may be more appropriate nargs must be %r to supply constrA  )r   r   r^  rh  r_   r+   r   r  r   rB  r   r#   r   r   r   r   ra  s              r2   r_   z_StoreAction.__init__  ss     A: K L L (!2?(JKKlD*) 	+ 
	r4   c                 2    t        || j                  |       y r6   )rc  r  rL  s        r2   rP  z_StoreAction.__call__  s    	499f-r4   rQ  r6   r$   r=   r>   r_   rP  re  rf  s   @r2   rh  rh    s'    
 :.r4   rh  c                   2     e Zd Z	 	 	 	 	 d fd	ZddZ xZS )_StoreConstActionc           	      :    t         t        |   ||d||||       y )Nr   )r   r  r   rB  r   r   r   )r^  ro  r_   	r+   r   r  rB  r   r   r   r   ra  s	           r2   r_   z_StoreConstAction.__init__  s/     	/) 	0 	r4   c                 F    t        || j                  | j                         y r6   )rc  r  rB  rL  s        r2   rP  z_StoreConstAction.__call__  s    	499djj1r4   NNFNNr6   rm  rf  s   @r2   ro  ro    s    
 "2r4   ro  c                   &     e Zd Z	 	 	 d fd	Z xZS )_StoreTrueActionc                 8    t         t        |   ||d|||       y )NTr   r  rB  r   r   r   )r^  ru  r_   r+   r   r  r   r   r   ra  s         r2   r_   z_StoreTrueAction.__init__  s,     	.) 	/ 	r4   )FFNr$   r=   r>   r_   re  rf  s   @r2   ru  ru    s    
  r4   ru  c                   &     e Zd Z	 	 	 d fd	Z xZS )_StoreFalseActionc                 8    t         t        |   ||d|||       y )NFrw  )r^  r{  r_   rx  s         r2   r_   z_StoreFalseAction.__init__  s,     	/) 	0 	r4   )TFNry  rf  s   @r2   r{  r{     s    
  r4   r{  c                   8     e Zd Z	 	 	 	 	 	 	 	 d fd	ZddZ xZS )_AppendActionc                     |dk(  rt        d      ||t        k7  rt        dt        z        t        t        |   |||||||||	|

       y )Nr   znargs for append actions must be != 0; if arg strings are not supplying the value to append, the append const action may be more appropriaterj  rA  )r   r   r^  r~  r_   rk  s              r2   r_   z_AppendAction.__init__  ss     A: O P P (!2?(JKKmT+) 	, 
	r4   c                     t        || j                  d       }t        |      }|j                  |       t	        || j                  |       y r6   )rE  r  rB   r&   rc  r+   rM  rN  rO  r   r9   s         r2   rP  z_AppendAction.__call__0  :    	499d3E"V	499e,r4   rQ  r6   rm  rf  s   @r2   r~  r~    s'    
 :-r4   r~  c                   2     e Zd Z	 	 	 	 	 d fd	ZddZ xZS )_AppendConstActionc           
      <    t         t        |   ||d|||||       y )Nr   )r   r  r   rB  r   r   r   r   )r^  r  r_   rq  s	           r2   r_   z_AppendConstAction.__init__9  s2     	 $0) 	1 	r4   c                     t        || j                  d       }t        |      }|j                  | j                         t        || j                  |       y r6   )rE  r  rB   r&   rB  rc  r  s         r2   rP  z_AppendConstAction.__call__K  s>    	499d3E"TZZ 	499e,r4   rs  r6   rm  rf  s   @r2   r  r  7  s    
 $-r4   r  c                   .     e Zd Z	 	 	 d fd	ZddZ xZS )_CountActionc                 8    t         t        |   ||d|||       y )Nr   )r   r  r   r   r   r   )r^  r  r_   rx  s         r2   r_   z_CountAction.__init__T  s+     	lD*) 	+ 	r4   c                 n    t        || j                  d       }|d}t        || j                  |dz          y )Nr   rb   )rE  r  rc  )r+   rM  rN  rO  r   counts         r2   rP  z_CountAction.__call__b  s2    	499d3=E	499eai0r4   )NFNr6   rm  rf  s   @r2   r  r  R  s    
 1r4   r  c                   .     e Zd Zeedf fd	ZddZ xZS )_HelpActionNc                 6    t         t        |   |||d|       y )Nr   r   r  r   r   r   )r^  r  r_   )r+   r   r  r   r   ra  s        r2   r_   z_HelpAction.__init__k  s(    
 	k4)) 	* 	r4   c                 D    |j                          |j                          y r6   )
print_helpexitrL  s        r2   rP  z_HelpAction.__call__w  s    r4   r6   r$   r=   r>   r   r_   rP  re  rf  s   @r2   r  r  i  s     !	
r4   r  c                   0     e Zd Zdeedf fd	ZddZ xZS )_VersionActionNc                 ^    |t        d      }t        t        |   |||d|       || _        y )Nz&show program's version number and exitr   r  )rr   r^  r  r_   version)r+   r   r  r  r   r   ra  s         r2   r_   z_VersionAction.__init__~  sA     <=>Dnd,) 	- 	 r4   c                     | j                   }||j                   }|j                         }|j                  |       |j                  |j	                         t
        j                         |j                          y r6   )r  _get_formatterr   _print_messagery   _sysstdoutr  )r+   rM  rN  rO  r   r  rj   s          r2   rP  z_VersionAction.__call__  s[    ,,?nnG))+	7#i335t{{Cr4   r6   r  rf  s   @r2   r  r  |  s     ! r4   r  c                   R     e Zd Z G d de      Zedddf fd	Zd Zd Zd	dZ	 xZ
S )
_SubParsersActionc                        e Zd Z fdZ xZS )&_SubParsersAction._ChoicesPseudoActionc                     |x}}|r|ddj                  |      z  z  }t        t        j                  |       }|j	                  g |||       y )Nr   r!   )r   r  r   r   )r*   r^  r  _ChoicesPseudoActionr_   )r+   r0   aliasesr   r   r  supra  s          r2   r_   z/_SubParsersAction._ChoicesPseudoAction.__init__  sU    !!Gd7TYYw%777)>>ECLLD!(  *r4   ry  rf  s   @r2   r  r    s    	* 	*r4   r  FNc           	          || _         || _        i | _        g | _        t        t
        |   ||t        | j                  |||       y )N)r   r  r   r   r   r   r   )_prog_prefix_parser_class_name_parser_map_choices_actionsr^  r  r_   r   )	r+   r   r[   parser_classr  r   r   r   ra  s	           r2   r_   z_SubParsersAction.__init__  sU     !) " "/))) 	0 	r4   c                    |j                  d      | j                  d||d<   |j                  dd      }|| j                  v rt	        | t        d      |z        |D ](  }|| j                  v st	        | t        d      |z         d|v r?|j                  d      }| j                  |||      }| j                  j                  |        | j                  di |}|| j                  |<   |D ]  }|| j                  |<    |S )Nr[   r   r  r<   zconflicting subparser: %szconflicting subparser alias: %sr   )
r   r  r   r  r   rr   r  r  r&   r  )r+   r0   kwargsr  aliasr   choice_actionrM  s           r2   
add_parserz_SubParsersAction.add_parser  s(   ::f%(,(9(94@F6N**Y+4(((a(C&Dt&KLL 	HE---#!=>FH H	H V::f%D 55dGTJM!!((7 $##-f-&,d#  	2E+1D!!%(	2 r4   c                     | j                   S r6   )r  r:   s    r2   r  z!_SubParsersAction._get_subactions  s    $$$r4   c                    |d   }|dd  }| j                   t        urt        || j                   |       	 | j                  |   }|j                  |d       \  }	}t        |	      j                         D ]  \  }
}t        ||
|        |r?t        |      j                  t        g        t        |t              j                  |       y y # t        $ r9 |dj                  | j                        d}t        d      |z  }t        | |      w xY w)Nr   rb   r!   )parser_namer   z5unknown parser %(parser_name)r (choices: %(choices)s))r  r   rc  r  KeyErrorr*   rr   r   parse_known_argsr  r9   
setdefault_UNRECOGNIZED_ARGS_ATTRrE  r   )r+   rM  rN  rO  r   r  r-   ru   msgsubnamespacekeyr1   s               r2   rP  z_SubParsersAction.__call__  s   QiQRj 99H$Ityy+6	+**;7F %+$;$;K$N!k|,224 	+JCIsE*	+ O&&'>CI67>>{K #  	+#.#yy)>)>?ADKLtSCc**		+s   C	 	ADr6   )r$   r=   r>   r   r  r   r_   r  r  rP  re  rf  s   @r2   r  r    s2    *v * .<%Lr4   r  c                       e Zd ZddZy)_ExtendActionNc                     t        || j                  d       }t        |      }|j                  |       t	        || j                  |       y r6   )rE  r  rB   r   rc  r  s         r2   rP  z_ExtendAction.__call__  r  r4   r6   )r$   r=   r>   rP  r<   r4   r2   r  r    s    -r4   r  c                   "    e Zd Z	 ddZd Zd Zy)r   Nc                 <    || _         || _        || _        || _        y r6   )_mode_bufsize	_encoding_errors)r+   modebufsizeencodingerrorss        r2   r_   zFileType.__init__  s    
!r4   c                 F    |dk(  rd j                   v r8d j                   v rt        j                  j                  S t        j                  S t	         fddD              r8d j                   v rt        j
                  j                  S t        j
                  S t        d       j                   z  }t        |      	 t        | j                    j                   j                   j                        S # t        $ r#}||d}t        d      }t        ||z        d }~ww xY w)	N-rbc              3   :   K   | ]  }|j                   v   y wr6   )r  )r$  r  r+   s     r2   r%  z$FileType.__call__.<locals>.<genexpr>#  s     4Q$**_4s   waxzargument "-" with mode %r)filenameerrorz$can't open '%(filename)s': %(error)s)r  r  stdinbufferanyr  rr   r   r   r  r  r  OSErrorr   )r+   stringr  eru   r;  s   `     r2   rP  zFileType.__call__  s    S=djj ,/4::,=tzz((M4::M4e44-0DJJ->t{{))ODKKO34tzzA o%	4

DMM4>>& & 	4 &3D>?G#GdN33	4s   =6C4 4	D =DD c           
      L   | j                   | j                  f}d| j                  fd| j                  fg}dj	                  |D cg c]  }|dk7  s	t        |       c}|D cg c]  \  }}||d| c}}z         }t        |       j                  d|dS c c}w c c}}w )Nr  r  r!   r   r   r    r"   )r  r  r  r  r*   r'   r#   r$   )r+   ru   r  r/   kwargs_strs         r2   r3   zFileType.__repr__2  s    zz4==(t~~.4<<0HI994EC3"9d3iEAG 2gb#!$ *,S1 22 3  :..99 F2s   
BB#B )r  r   NN)r$   r=   r>   r_   rP  r3   r<   r4   r2   r   r     s     4(:r4   r   c                        e Zd Z	 d Zd Zd Zy)r   c                 2    |D ]  }t        | |||           y r6   )rc  )r+   r  r0   s      r2   r_   zNamespace.__init__E  s!     	.DD$t-	.r4   c                 \    t        |t              st        S t        |       t        |      k(  S r6   )r   r   NotImplementedr  )r+   others     r2   __eq__zNamespace.__eq__I  s%    %+!!DzT%[((r4   c                     || j                   v S r6   )r8   )r+   r  s     r2   __contains__zNamespace.__contains__N  s    dmm##r4   N)r$   r=   r>   r_   r  r  r<   r4   r2   r   r   >  s    .)
$r4   r   c                        e Zd Z fdZd ZddZd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZddZd Zd Zd Zd Z xZS )_ActionsContainerc                 @   t         t        |           || _        || _        || _        || _        i | _        | j                  dd t               | j                  ddt               | j                  ddt               | j                  ddt               | j                  ddt               | j                  ddt               | j                  ddt               | j                  ddt               | j                  dd	t                | j                  dd
t"               | j                  ddt$               | j                  ddt&               | j)                          g | _        i | _        g | _        g | _        i | _        t5        j6                  d      | _        g | _        y )Nr   storestore_const
store_truestore_falser&   append_constr  r   r  parsersr   z^-\d+$|^-\d*\.\d+$)r^  r  r_   descriptionargument_defaultprefix_charsconflict_handler_registriesregisterrh  ro  ru  r{  r~  r  r  r  r  r  r  _get_handler_actions_option_string_actions_action_groups_mutually_exclusive_groups	_defaultsrV   rW   _negative_number_matcher_has_negative_number_optionals)r+   r  r  r  r  ra  s        r2   r_   z_ActionsContainer.__init__T  s\   
 	/1& 0( 0  	hl3h6h/@Ah.>?h/@Ah-8h0BCh6h4h	>:h	+<=h-8 	 &(# !*,'  ),4I(J% /1+r4   c                 F    | j                   j                  |i       }|||<   y r6   )r  r  )r+   registry_namer1   r   registrys        r2   r  z_ActionsContainer.register  s#    ##..}bA r4   c                 @    | j                   |   j                  ||      S r6   )r  r   )r+   r  r1   r   s       r2   _registry_getz_ActionsContainer._registry_get  s     .225'BBr4   c                     | j                   j                  |       | j                  D ]%  }|j                  |v s||j                     |_        ' y r6   )r  updater  r  r   )r+   r  r   s      r2   set_defaultsz_ActionsContainer.set_defaults  sE    f% mm 	5F{{f$!'!4	5r4   c                     | j                   D ],  }|j                  |k(  s|j                   |j                  c S  | j                  j	                  |d       S r6   )r  r  r   r  r   )r+   r  r   s      r2   get_defaultz_ActionsContainer.get_default  sM    mm 	&F{{d"v~~'A~~%	& ~~!!$--r4   c                    	 | j                   }|rt        |      dk(  r.|d   d   |vr$|rd|v rt        d       | j                  |i |}n | j                  |i |}d|vrA|d   }|| j
                  v r| j
                  |   |d<   n| j                  | j                  |d<   | j                  |      }t        |      st        d|d       |di |}| j                  d|j                  |j                        }t        |      st        |d	      |t        u rt        |d
      t        | d      r!	 | j                         j                  |d        | j!                  |      S # t        $ r t        d      w xY w)Nrb   r   r  z+dest supplied twice for positional argumentr   zunknown action ""r#   z is not callablez: is a FileType class object, instance of it must be passedr  z,length of metavar tuple does not match nargsr<   )r  r   r   _get_positional_kwargs_get_optional_kwargsr  r  _pop_action_classcallabler  r#   r   r  r  r   r  _add_action)r+   ru   r  charsr  action_classr   	type_funcs           r2   r   z_ActionsContainer.add_argument  s   	 !!s4yA~$q'!*E*A&( !NOO0T00$A&AF /T..??F F"&>Dt~~%$(NN4$8y!&&2$($9$9y! --f5%lDEE'' &&vv{{FKKH		"Y@AA 2;> ? ? 4)*Q##%2264@ ''  Q !OPPQs   9 E* *E?c                 Z    t        | g|i |}| j                  j                  |       |S r6   )_ArgumentGroupr  r&   )r+   ru   r  r   s       r2   add_argument_groupz$_ActionsContainer.add_argument_group  s/    t5d5f5""5)r4   c                 T    t        | fi |}| j                  j                  |       |S r6   )_MutuallyExclusiveGroupr  r&   )r+   r  r   s      r2   add_mutually_exclusive_groupz._ActionsContainer.add_mutually_exclusive_group  s*    '77''..u5r4   c                 V   | j                  |       | j                  j                  |       | |_        |j                  D ]  }|| j
                  |<    |j                  D ]F  }| j                  j                  |      s| j                  r,| j                  j                  d       H |S )NT)	_check_conflictr  r&   	containerr   r  r  matchr  )r+   r   r   s      r2   r  z_ActionsContainer._add_action  s    V$ 	V$ $22 	@M9?D''6	@ $22 	EM,,22=A::77>>tD	E r4   c                 :    | j                   j                  |       y r6   )r  rX  r  s     r2   _remove_actionz _ActionsContainer._remove_action  s    V$r4   c                    i }| j                   D ]B  }|j                  |v r#t        d      }t        ||j                  z        |||j                  <   D i }|j                   D ]r  }|j                  |vr?| j	                  |j                  |j
                  |j                        ||j                  <   |j                  D ]  }||j                     ||<    t |j                  D ]4  }| j                  |j                        }|j                  D ]  }|||<   	 6 |j                  D ]#  }|j                  ||       j                  |       % y )Nz.cannot merge actions - two groups are named %r)titler  r  )r   )r  r  rr   r   r  r  r  r   r  r  r   r  r   r  )r+   r  title_group_mapr   r  	group_mapr   mutex_groups           r2   _add_container_actionsz(_ActionsContainer._add_container_actions  si   (( 	1E{{o-HI !455+0OEKK(		1 	-- 	AE {{/1/3/F/F++ % 1 1%*%;%; 0G 0=,  .. A$3EKK$@	&!A	A" 99 	0E;; < )K  .. 0$/	&!0	0  (( 	<FMM&$'33F;	<r4   c                     d|v rt        d      }t        |      |j                  d      t        t        fvrd|d<   |j                  d      t        k(  r	d|vrd|d<   t        ||g       S )Nr   z1'required' is an invalid argument for positionalsr   Tr   r  r   )rr   r  r   r   r   rs   )r+   r  r  r  s       r2   r  z(_ActionsContainer._get_positional_kwargs#  st    GHCC.  ::gx&>>!%F:::g,.9F3J!%F: Fb99r4   c                    g }g }|D ]~  }|d   | j                   vr(|| j                   d}t        d      }t        ||z        |j                  |       t	        |      dkD  s\|d   | j                   v sn|j                  |        |j                  dd       }|U|r|d   }n|d   }|j                  | j                         }|st        d      }t        |z        |j                  dd      }t        |||	      S )
Nr   )optionr  zNinvalid option string %(option)r: must start with a character %(prefix_chars)rrb   r  z%dest= is required for options like %rr  rr   r  )	r  rr   r   r&   r   r   lstripreplacers   )	r+   ru   r  r   long_option_stringsr   r  r  dest_option_strings	            r2   r  z&_ActionsContainer._get_optional_kwargs3  s$    ! 	:M #t'8'88"/(,(9(9; G H t,, !!-0=!A%-*:d>O>O*O#**=9	: zz&$'<"%8%;"%3A%6"%,,T->->?D?@ }!455<<S)D FnEEr4   c                 L    |j                  d|      }| j                  d||      S )Nr   )r   r  )r+   r  r   r   s       r2   r  z#_ActionsContainer._pop_action_classU  s'    Hg.!!(FF;;r4   c                     d| j                   z  }	 t        | |      S # t        $ r$ t        d      }t	        || j                   z        w xY w)Nz_handle_conflict_%sz%invalid conflict_resolution value: %r)r  rE  r  rr   r   )r+   handler_func_namer  s      r2   r  z_ActionsContainer._get_handlerY  sV    1D4I4II	:4!233 	:;<CS4#8#8899	:s	    -A
c                     g }|j                   D ]3  }|| j                  v s| j                  |   }|j                  ||f       5 |r| j                         } |||       y y r6   )r   r  r&   r  )r+   r   confl_optionalsr   confl_optionalr  s         r2   r  z!_ActionsContainer._check_conflictb  st     #22 	HM ; ;;!%!<!<]!K&&~'FG	H #002V_5 r4   c                     t        ddt        |            }dj                  |D cg c]  \  }}|	 c}}      }t        ||z        c c}}w )Nzconflicting option string: %szconflicting option strings: %sr!   )r   r   r*   r   )r+   r   conflicting_actionsr;  r   conflict_strings         r2   _handle_conflict_errorz(_ActionsContainer._handle_conflict_errorp  s^    :;235 ))(;%=)> &3 %= > FGo$=>>%=s   A

c                     |D ]d  \  }}|j                   j                  |       | j                  j                  |d        |j                   rJ|j                  j                  |       f y r6   )r   rX  r  r   r  r  )r+   r   r,  r   s       r2   _handle_conflict_resolvez*_ActionsContainer._handle_conflict_resolvey  sc     &9 		8!M6 !!((7''++M4@ ((  //7		8r4   r6   )r$   r=   r>   r_   r  r  r  r   r   r  r  r  r  r  r  r  r  r  r  r.  r0  re  rf  s   @r2   r  r  R  sc    01j!C5.1(f

*%&<P:  FD<:6?8r4   r  c                   >     e Zd Zd fd	Z fdZ fdZ fdZ xZS )r  c                    |j                   } |d|j                          |d|j                          |d|j                         t        t
        |   } |dd|i| || _        g | _        |j                  | _	        |j                  | _
        |j                  | _        |j                  | _        |j                  | _        |j                  | _        y )Nr  r  r  r  r<   )r  r  r  r  r^  r  r_   r  r   r  r  r  r  r  r  )r+   r  r  r  r  r  
super_initra  s          r2   r_   z_ArgumentGroup.__init__  s    ""!9#=#=>~y556!9#=#=>>49
5{5f5 
  %00!**&/&F&F#",,44 	+*3*N*N'r4   c                 d    t         t        |   |      }| j                  j	                  |       |S r6   )r^  r  r  r   r&   r+   r   ra  s     r2   r  z_ArgumentGroup._add_action  s-    ~t8@""6*r4   c                 b    t         t        |   |       | j                  j	                  |       y r6   )r^  r  r  r   rX  r5  s     r2   r  z_ArgumentGroup._remove_action  s&    nd26:""6*r4   c                 Z    t        j                  dt        d       t        |   |i |S )Nz&Nesting argument groups is deprecated.rE   category
stacklevel)r\  warnDeprecationWarningr^  r  r+   ru   r  ra  s      r2   r  z!_ArgumentGroup.add_argument_group  s/    4'	

 w)4:6::r4   NN)r$   r=   r>   r_   r  r  r  re  rf  s   @r2   r  r    s    O,
+; ;r4   r  c                   6     e Zd Zd fd	Zd Zd Z fdZ xZS )r  c                 H    t         t        |   |       || _        || _        y r6   )r^  r  r_   r   
_container)r+   r  r   ra  s      r2   r_   z _MutuallyExclusiveGroup.__init__  s!    %t5i@ #r4   c                     |j                   rt        d      }t        |      | j                  j	                  |      }| j
                  j                  |       |S )Nz-mutually exclusive arguments must be optional)r   rr   r   rA  r  r   r&   )r+   r   r  s      r2   r  z#_MutuallyExclusiveGroup._add_action  sK    ??CDCS/!,,V4""6*r4   c                 p    | j                   j                  |       | j                  j                  |       y r6   )rA  r  r   rX  r  s     r2   r  z&_MutuallyExclusiveGroup._remove_action  s(    &&v.""6*r4   c                 Z    t        j                  dt        d       t        |   |i |S )Nz0Nesting mutually exclusive groups is deprecated.rE   r8  )r\  r;  r<  r^  r  r=  s      r2   r  z4_MutuallyExclusiveGroup.add_mutually_exclusive_group  s/    >'	

 w3TDVDDr4   )F)r$   r=   r>   r_   r  r  r  re  rf  s   @r2   r  r    s    $
+E Er4   r  c                        e Zd Z	 ddddg edddddddf fd	Zd Zd Zd Zd	 Zd
 Z	d"dZ
d"dZd Zd Zd Zd Zd Zd Zd Zd Zd"dZd"dZd Zd Zd Zd Zd Zd Zd#dZd#dZd#dZd$d Zd! Z  xZ!S )%r   Nr  r  Tc           	         t         t        | 
  } ||||	|
       |0t        j                  j                  t        j                  d         }|| _        || _	        || _
        || _        || _        || _        || _        || _        | j                   } |t#        d            | _         |t#        d            | _        d | _        d }| j+                  dd |       d|v rdn|d   }| j                  r,| j-                  |dz   |d	z  d
z   d
t.        t#        d             |D ];  }| j1                  |       	 |j2                  }| j2                  j5                  |       = y # t6        $ r Y Jw xY w)N)r  r  r  r  r   zpositional argumentsoptionsc                     | S r6   r<   )r  s    r2   identityz)ArgumentParser.__init__.<locals>.identity  s    Mr4   r#   r  hrE   r   zshow this help message and exit)r   r   r   )r^  r   r_   _ospathbasenamer  argvr[   r   epilogformatter_classfromfile_prefix_charsadd_helpallow_abbrevexit_on_errorr  rr   _positionals
_optionals_subparsersr  r   r   r  r  r  r  )r+   r[   r   r  rO  parentsrP  r  rQ  r  r  rR  rS  rT  	superinit	add_grouprI  default_prefixrk   defaultsra  s                       r2   r_   zArgumentParser.__init__  su    .$8	k+#3#3	5 <88$$TYYq\2D	
.%:" (*++	%a(>&?@#AiL1	fdH- !$| 3a==s"N1$4V$;x89  ;  	0F''/0!++ %%h/	0 " s   5E	E+*E+c                 L    g d}|D cg c]  }|t        | |      f c}S c c}w )N)r[   r   r  rP  r  rR  rD  rF  s      r2   r(   zArgumentParser._get_kwargs&  s+    
 9>>wtT*+>>>rH  c                    | j                   | j                  t        d             |j                  dt	        |              d|v sd|v rNt        |j                  dd            }t        |j                  dd             }| j                  ||      | _         n| j                  | _         |j                  d      k| j                         }| j                         }| j                  }|j                  | j                  ||d       |j                         j                         |d<   | j!                  |d      } |d
d	g i|}| j                   j#                  |       |S )Nz(cannot have multiple subparser argumentsr  r  r  subcommandsr[   rn   r  r   r<   )rW  r  rr   r  r#   r   r  rU  r   r  _get_positional_actionsr  r   r   ry   r   r  r  )	r+   r  r  r  rj   r   r   parsers_classr   s	            r2   add_subparserszArgumentParser.add_subparsers4  s>   'JJqCDE 	.$t*5f 7fjj-89EFJJ}d;<K#66ukJD#00D ::f%++-I668K44F

KD&224::<F6N ..vyA;b;F;$$V, r4   c                     |j                   r| j                  j                  |       |S | j                  j                  |       |S r6   )r   rV  r  rU  r  s     r2   r  zArgumentParser._add_actionS  s?      OO''/  ))&1r4   c                 X    | j                   D cg c]  }|j                  r| c}S c c}w r6   r  r   r  s     r2   _get_optional_actionsz$ArgumentParser._get_optional_actionsZ  s/    "mm*((  * 	* *   'c                 X    | j                   D cg c]  }|j                  s| c}S c c}w r6   re  r  s     r2   r`  z&ArgumentParser._get_positional_actions_  s/    "mm.,,  . 	. .rg  c                     | j                  ||      \  }}|r.t        d      }| j                  |dj                  |      z         |S Nzunrecognized arguments: %sr   )r  rr   r  r*   r+   ru   rN  rN  r  s        r2   
parse_argszArgumentParser.parse_argsg  sD    **4;
d01CJJsSXXd^+,r4   c                     |t         j                  dd  }nt        |      }|
t               }| j                  D ]`  }|j
                  t        ust        ||j
                        r-|j                  t        us@t        ||j
                  |j                         b | j                  D ])  }t        ||      rt        ||| j                  |          + | j                  r	 | j                  ||      \  }}n| j                  ||      \  }}t        |t               r/|j#                  t%        |t                      t'        |t                ||fS # t        $ r$}| j                  t        |             Y d }~kd }~ww xY wra   )r  rN  r7   r   r  r  r   r  r   rc  r  rT  _parse_known_argsr   r  r   r  r   rE  delattr)r+   ru   rN  r   r  errs         r2   r  zArgumentParser.parse_known_argsn  sL   <99QR=D :D !I mm 	HF{{(*y&++6~~X5	6;;G		H NN 	?D9d+	4)=>	?
 %"&"8"8y"I	4 #44T9EOIt956KK	+BCDI67$ ! %

3s8$$%s   "E 	E=E88E=c           	      X    !"  j                    j                        i  j                  D ]h  }|j                  }t	        |j                        D ]B  \  }}j                  |g       }|j                  |d |        |j                  ||dz   d         D j i g }t              }	t	        |	      D ]b  \  }}
|
dk(  r*|j                  d       |	D ]  }
|j                  d        5 j                  |
      }|d}n||<   d}|j                  |       d dj                  |      t                t               !d ! fd	" "fd} j                          "fd	}g d
}rt              }nd}||k  r_t        D cg c]	  }||k\  r| c}      }||k7  r ||      }||kD  r|}8|}|vr|| }j                  |       |} ||      }||k  r_ ||      }j                  |d         g } j                  D ]  }| vs|j                   r|j                  t#        |             /|j$                  <t'        |j$                  t(              sWt+        |j,                        sn|j$                  t/        |j,                        u st1        |j,                   j3                  ||j$                                |r, j5                  t7        d      dj                  |      z          j                  D ]  }|j                   s|j                  D ]  }|!v s & |j                  D cg c]  }|j8                  t:        urt#        |      ! }}t7        d      } j5                  |dj                  |      z          fS c c}w c c}w )Nrb   rT  r  AOrn   c                 2   	j                  |        j                  | |      }|| j                  urQ
j                  |        j                  | g       D ]+  }|
v st	        d      }t        |      }t        | ||z         |t        ur | ||       y y )Nznot allowed with argument %s)r   _get_valuesr   r   rr   r7  r   r   )r   argument_stringsr   argument_valuesconflict_actionr  action_nameaction_conflictsrN  seen_actionsseen_non_default_actionsr+   s          r2   take_actionz5ArgumentParser._parse_known_args.<locals>.take_action  s    V$"..v7GHO
 fnn4(,,V4'7';';FB'G GO&*BB >?&6&G+FC+4EFF	G h.tYG /r4   c                    |    }|\  }}}}j                   }g }	 |j                  |           | dz   S | ||d      }j                  }	|dk(  r|d   |	vr|dk7  r|s|d   |	v rt        d      }
t	        ||
|z        |j                  |g |f       |d   }||d   z   }j
                  }||v r$||   }|dd  }|sd x}}n|d   dk(  rd}|dd  }nd}nj                  ||z          | dz   }np|dk(  r| dz   }|g}|j                  |||f       nNt        d      }
t	        ||
|z        | dz   }|d  } |||      }||z   }|| }|j                  |||f       nE|D ]  \  }}} |||        |S )Nrb   rr  r   rn   zignored explicit argument %rr   )_match_argumentr&   r  rr   r   r  )start_indexoption_tupler   r   sepexplicit_argmatch_argumentaction_tuples	arg_countr  r  charoptionals_mapstopru   r   selected_patternsr-   arg_strings_patternextrasoption_string_indicesr+   r}  s                    r2   consume_optionalz:ArgumentParser._parse_known_args.<locals>.consume_optional  s1    1=L7C4FM3 "11NM >MM+k":;&?*  + .vs ;I
 !--E!Q)!,E9(B.,q/U":"#$B"CC"/l8J"KK%,,fb--HI,Q/(,|A(>(,(C(C(M9%2=%AF+7+;L#/59 9l!-aC!7&)/;AB/?&("MM$*=>#.?D! #a*Q ,~%,,fdM-JK
   >?+FC,4FGG (!OE(;EF(C% .v7H II 9,D&uT2D!((&$)FGE N 0= 9+mFD-89Kr4   c                     
j                   }| d  } |	|      }t        	|      D ]  \  }}| | |z    }| |z  }  ||        	t        |      d  	d d  | S r6   )_match_arguments_partialzipr   )r  match_partialselected_pattern
arg_countsr   r  ru   r-   r  r   r+   r}  s          r2   consume_positionalsz=ArgumentParser._parse_known_args.<locals>.consume_positionals2  s     99M2;<@&{4DEJ &)j%A *!	";i0GHy(FD)* )Z)9:KNr4   r   r   z(the following arguments are required: %sr!   z#one of the arguments %s is requiredr   r6   )rQ  _read_args_from_filesr  r   r   r  r   iterr&   _parse_optionalr*   r   r`  rM   rL   r  r   r7  r   r   r   r  r  rE  rc  
_get_valuer  rr   r   r   )#r+   r-   rN  r  r   r   mutex_action	conflictsarg_string_pattern_partsarg_strings_iter
arg_stringr  patternr  r  r  max_option_string_indexr   next_option_string_indexpositionals_end_indexstrings
stop_indexrequired_actionsr   r   rG  r  rz  r  r  r  r   r{  r|  r}  s#   ```                        @@@@@@@@r2   rn  z ArgumentParser._parse_known_args  s   %%144[AK :: 	8K'66M#,[-G-G#H 8<,77bI	  r!23  q1uv!678	8 !##% ,&'78 	9MAz T!(//4"2 9J,33C89  $33J?'!G/;)!,!G(//8#	9( !gg&>? u#&5 	H 	H*S	 S	n 224	 	(  &)*?&@#&(#44 (+2,)K' ,) (*$ 66(;K(H% );6"7K"7K "77%k2JKg&6 +;7K5 44: )5
 	k*+./ mm 	IF\)??$++,<V,DE 2"6>>37	6;;7')V[[*II	6;; $ GI	I  JJqCDyy!123 4 44 	6E~~#22 
6F!99
6 ,1+?+?=!' &8 ; .f5 =E = ABCJJsSXXe_45	6 &  M,)~=s   N"$N'c                 6   g }|D ]  }|r|d   | j                   vr|j                  |       (	 t        |dd  t        j                         t        j
                               5 }g }|j                         j                         D ])  }| j                  |      D ]  }|j                  |        + | j                  |      }|j                  |       d d d         |S # 1 sw Y   xY w# t        $ r%}| j                  t        |             Y d }~d }~ww xY w)Nr   rb   )r  r  )rQ  r&   r   r  getfilesystemencodinggetfilesystemencodeerrorsreadr'  convert_arg_line_to_argsr  r   r  r  r   )r+   r-   new_arg_stringsr  	args_filearg_liner/   rp  s           r2   r  z$ArgumentParser._read_args_from_files  s   % 	)J Ad6P6P!P&&z2)jn'+'A'A'C%)%C%C%EG <JS&((1(8(C(C(E 8H'+'D'DX'N 8 + 2 23 788 '+&@&@&M'..{;<	), < <  )JJs3x(()s0   5C*#A/CC*C'	#C**	D3DDc                     |gS r6   r<   )r+   r  s     r2   r  z'ArgumentParser.convert_arg_line_to_args  s
    zr4   c                 x   | j                  |      }t        j                  ||      }|xd t        d      t        t        d      t
        t        d      i}|j                  |j                        }|$t        dd|j                        |j                  z  }t        ||      t        |j                  d            S )Nzexpected one argumentzexpected at most one argumentzexpected at least one argumentzexpected %s argumentzexpected %s argumentsrb   )_get_nargs_patternrV   r  rr   r   r   r   r   r   r   r   r   )r+   r   r  nargs_patternr  nargs_errorsr  s          r2   r  zArgumentParser._match_argument  s    //7		-)<= =a/0!;<Q?@L
 ""6<<0C{56%||-/5||<  ,, 5;;q>""r4   c           	      \   g }t        t        |      dd      D ]  }|d | }dj                  |D cg c]  }| j                  |       c}      }t	        j
                  ||      }|O|j                  |j                         D 	cg c]  }	t        |	       c}	        |S  |S c c}w c c}	w )Nr   r   rn   )r   r   r*   r  rV   r  r   r   )
r+   r   r  r   r   actions_slicer   r  r  r  s
             r2   r  z'ArgumentParser._match_arguments_partial  s     s7|Q+ 	A#BQKMgg-:<#)  $66v> < =GIIg':;E Hvs6{HI 	 < Is   B$
B)
c                 ~   |sy |d   | j                   vry || j                  v r| j                  |   }||d d fS t        |      dk(  ry |j                  d      \  }}}|r#|| j                  v r| j                  |   }||||fS | j	                  |      }t        |      dkD  rOdj                  |D cg c]	  \  }}}}| c}}}}      }||d}t        d      }	| j                  |	|z         nt        |      dk(  r|\  }
|
S | j                  j                  |      r| j                  sy d|v ry d |d d fS c c}}}}w )Nr   rb   r   r!   )r   matchesz4ambiguous option: %(option)s could match %(matches)sr   )r  r  r   	partition_get_option_tuplesr*   rr   r  r  r  r  )r+   r  r   r   r  r  option_tuplesrG  ru   r  r  s              r2   r  zArgumentParser._parse_optional  s    !} 1 11 44400<F:tT11 z?a ,6+?+?+D(sL=D$?$??00?F=#|;; //
; }!ii@M!O !O<FM3 "/ !O PG(W=DJKCJJsTz" 1$)ML
 ((..z:66 * Zt++3!Os   3D7c                 ~   g }| j                   }|d   |v ry|d   |v rr| j                  rd|j                  d      \  }}}|sd x}}| j                  D ]:  }|j	                  |      s| j                  |   }||||f}|j                  |       < |S |d   |v r|d   |vr|}|d d }	|dd  }
| j                  D ]f  }||	k(  r'| j                  |   }||d|
f}|j                  |       /|j	                  |      sA| j                  |   }||d d f}|j                  |       h |S | j                  t        d      |z         |S )Nr   rb   r   rE   rn   zunexpected option string: %s)r  rS  r  r  rY  r&   r  rr   )r+   r   r   r  option_prefixr  r  r   r   short_option_prefixshort_explicit_args              r2   r  z!ArgumentParser._get_option_tuples	  s    !!u$q)9U)B  3@3J3J33O0sL)--C,%)%@%@ +M$//>!%!<!<]!K$mS,Fc*	+: ) 1&=+;5+H)M"/"3!.qr!2!%!<!< ' $77!88GF -5GGCMM#&"--m<!88GF -t;CMM#&'  JJq78=HI r4   c                 F   |j                   }|d}n_|t        k(  rd}nS|t        k(  rd}nG|t        k(  rd}n;|t        k(  rd}n/|t
        k(  rd}n#|t        k(  rd}ndd	j                  d
|z        z  }|j                  r$|j                  d	d      }|j                  dd      }|S )Nz(-*A-*)z(-*A?-*)z	(-*[A-]*)z
(-*A[A-]*)z([-AO]*)z(-*A[-AO]*)z(-*-*)z(-*%s-*)z-*rr  rn   r  )
r   r   r   r   r   r   r   r*   r   r"  )r+   r   r   r  s       r2   r  z!ArgumentParser._get_nargs_pattern>	  s      =%M h&M l"'M k!(M i&M f_)M h$M '3;)??M   )11$;M)11#r:M r4   c                     | j                  ||      \  }}|r.t        d      }| j                  |dj                  |      z         |S rj  )parse_known_intermixed_argsrr   r  r*   rk  s        r2   parse_intermixed_argsz$ArgumentParser.parse_intermixed_argso	  sD    55dIF
d01CJJsSXXd^+,r4   c                    | j                         }|D cg c]  }|j                  t        t        fv r| }}|rt	        d|d   j                  z        | j
                  D cg c]#  }|j                  D ]  }||v r|j                   % c}}rt	        d      	 | j                  }	 | j                  | j                         dd  | _        |D ]:  }|j                  |_
        t        |_        |j                  |_        t        |_        < | j                  ||      \  }}|D ]g  }t        ||j                        st!        ||j                        g k(  s4ddlm}	  |	d|j                  d|       t'        ||j                         i 	 |D ]$  }|j                  |_        |j                  |_        & 	 | j)                         }
	 |
D ]  }|j*                  |_        d|_         | j
                  D ]  }|j*                  |_        d|_         | j                  ||      \  }}|
D ]  }|j,                  |_         | j
                  D ]  }|j,                  |_         	 || _        ||fS c c}w c c}}w # |D ]$  }|j                  |_        |j                  |_        & w xY w# |
D ]  }|j,                  |_         | j
                  D ]  }|j,                  |_         w xY w# | _        w xY w)	Nz3parse_intermixed_args: positional arg with nargs=%sr   z;parse_intermixed_args: positional in mutuallyExclusiveGroup   )r;  zDo not expect z in F)r`  r   r   r   r  r  r   r  r   r   
save_nargsr   r   save_defaultr  r  rE  r\  r;  ro  rf  r   save_required)r+   ru   rN  r   r   ar   
save_usageremaining_argsr;  r   r  s               r2   r  z*ArgumentParser.parse_known_intermixed_argsv	  s    224"- 5 33  5 5 --.qTZZ8 9 9 &*%D%D IE..I&K2G KK IK I 6 7 7.	$J9::%!%!2!2!4QR!8DJ) .F(.F%#+FL*0..F'%-FN. -1,A,A$BK-M)	>) 8F	6;;7 '	6;; ? C1iPQ	6;;78 * 9F#)#4#4FL%+%8%8FN9 224I9 ( ,F+1??F(&+FO, "<< +E*/..E'%*EN+ %)$9$9.:C%E!	6 ( ;F&,&:&:FO;!<< 9E%*%8%8EN9 $DJ&  u5I: * 9F#)#4#4FL%+%8%8FN9" ( ;F&,&:&:FO;!<< 9E%*%8%8EN9 $DJsU   !I,$(I1K$ )BI7 =I7 6I7 :K$ 	AJ% &:K$ 7+J""K$ %<K!!K$ $	K-c                 j   |j                   s*|j                  t        t        fvr	 |j	                  d       |sn|j                  t        k(  r[|j                   r|j                  }n|j                  }t        |t              r$| j                  ||      }| j                  ||       |S |sO|j                  t        k(  r<|j                   s0|j                   |j                  }| j                  ||       |S |}|S t        |      dk(  r>|j                  d t        fv r*|\  }| j                  ||      }| j                  ||       |S |j                  t        k(  r!|D cg c]  }| j                  ||       }}|S |j                  t        k(  r6|D cg c]  }| j                  ||       }}| j                  ||d          |S |j                  t        k(  rt        }|S |D cg c]  }| j                  ||       }}|D ]  }| j                  ||        |S # t
        $ r Y w xY wc c}w c c}w c c}w )NrT  rb   r   )r   r   r   r   rX  r   r   rB  r   r   r   r  _check_valuer   r   r   )r+   r   r-   r1   r  vs         r2   ru  zArgumentParser._get_values	  s-   $$fi=P)P""4(
 v||x7$$%%6!!&%0P I &,,,">''~~)!!&%0@ 9 $8 3 "v||h7G'G%KJOOFJ7Efe,, ' \\Y&9DEAT__VQ/EEE$  \\V#9DEAT__VQ/EEEfeAh/  \\X%E  :EEAT__VQ/EEE -!!&!,- g  B F F Fs#   H H&H+ H0	H#"H#c                    | j                  d|j                  |j                        }t        |      st        d      }t	        |||z        	  ||      }|S # t
        $ r}t        |      }t	        ||      d }~wt        t        f$ rJ t        |j                  dt        |j                              }||d}t        d      }t	        |||z        w xY w)Nr#   z%r is not callabler$   )r#   r1   z!invalid %(type)s value: %(value)r)r  r#   r  rr   r   r   r   r  r   rE  r'   )	r+   r   r  r
  r  r   rp  r0   ru   s	            r2   r  zArgumentParser._get_value	  s    &&vv{{FKKH		"()Ci88	4z*F  ! 	-c(C,, :& 	46;;
D4EFD :6D78Cd
33		4s   A 	C!A88ACc                     |j                   U||j                   vrF|dj                  t        t        |j                               d}t	        d      }t        |||z        y y )Nr!   )r1   r   z3invalid choice: %(value)r (choose from %(choices)s))r   r*   r   r'   rr   r   )r+   r   r1   ru   r  s        r2   r  zArgumentParser._check_value
  s^    >>%%v~~*E"#yyT6>>)BCEDIJCd
33	 +F%r4   c                     | j                         }|j                  | j                  | j                  | j                         |j                         S r6   )r  r   r   r  r  ry   )r+   rj   s     r2   r   zArgumentParser.format_usage!
  sB    '')	DJJ ;;	=$$&&r4   c                    | j                         }|j                  | j                  | j                  | j                         |j                  | j                         | j                  D ]c  }|j                  |j                         |j                  |j                         |j                  |j                         |j                          e |j                  | j                         |j                         S r6   )r  r   r   r  r  r   r  r  r~   r  r   r   r   rO  ry   )r+   rj   action_groups      r2   ry   zArgumentParser.format_help'
  s    '')	 	DJJ ;;	= 	4++, !// 	$L##L$6$67|778##L$?$?@!!#		$ 	4;;' $$&&r4   c                 :    | j                  | j                        S )Nr   )rP  r[   r:   s    r2   r  zArgumentParser._get_formatter>
  s    ###33r4   c                 h    |t         j                  }| j                  | j                         |       y r6   )r  r  r  r   r+   files     r2   print_usagezArgumentParser.print_usageD
  s)    <;;DD--/6r4   c                 h    |t         j                  }| j                  | j                         |       y r6   )r  r  r  ry   r  s     r2   r  zArgumentParser.print_helpI
  s)    <;;DD,,.5r4   c                     |r'|xs t         j                  }	 |j                  |       y y # t        t        f$ r Y y w xY wr6   )r  stderrwriter  r  )r+   r;  r  s      r2   r  zArgumentParser._print_messageN
  sB    &4;;D

7#  #G, s   + ==c                 r    |r | j                  |t        j                         t        j                  |       y r6   )r  r  r  r  )r+   statusr;  s      r2   r  zArgumentParser.exitY
  s%    5		&r4   c                     	 | j                  t        j                         | j                  |d}| j	                  dt        d      |z         y )N)r[   r;  rE   z%(prog)s: error: %(message)s
)r  r  r  r[   r  rr   )r+   r;  ru   s      r2   r  zArgumentParser.error^
  sB    	 	%		g6		!Q784?@r4   r>  r6   )r   N)"r$   r=   r>   r   r_   r(   rb  r  rf  r`  rl  r  rn  r  r  r  r  r  r  r  r  r  ru  r  r  r   ry   r  r  r  r  r  r  re  rf  s   @r2   r   r     s    , !!.!'+"&")"#=0D	?>*
.$LA!F6#, 7,r(T+bH!Z8t24''.47
6

Ar4   r   )3__version____all__osrK  rerV   sysr  r\  r   rr   r   r   r   r   r   r   r   r  r   r   rB   r   r	   r
   r   r   r7  	Exceptionr   r   r   r[  r   rh  ro  ru  r{  r~  r  r  r  r  r  r  r   r   r  r  r  r   r<   r4   r2   <module>r     s  ;z ,     *		. v >	"HF HVQ- Q!6 !M :$} $&?I ?(		 	\@ \@@ h 6/F 6/r .6  .F2 2.( ") "#-F #-L- -616 1.& &V 8bL bLH-M -1:v 1:n$  $(s8 s8l	';& ';TEn E8[A%'8 [Ar4   