
    z%i                       	 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          </home/uftp/.pyenv/versions/3.12.0/lib/python3.12/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r5| j                  )| j                  j                  }d|d| j                  fz  }nd} |d||dg      S c c}}w )N z%*s%s:

)	rk   rj   rd   _join_partsr9   rf   rl   r   rP   )r+   r*   funcargs	item_helpcurrent_indentrl   s          r2   format_helpz"HelpFormatter._Section.format_help   s    {{&&&(>>--DDJJGjdDdDkGHI{{&&&(  ||8+0H!%!?!?$DLL'II w	4899! Hs   C#
r6   )r$   r=   r>   r_   ru   r<   r4   r2   rS   rh      s    		:r4   rS   c                 R    | j                   j                  j                  ||f       y r6   )rU   r9   r&   )r+   rq   rr   s      r2   	_add_itemzHelpFormatter._add_item   s     ##**D$<8r4   c                     | j                          | j                  | | j                  |      }| j                  |j                  g        || _        y r6   )rd   rS   rU   rw   ru   )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   rw   _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   rw   _format_usage)r+   usageactionsgroupsprefixrr   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   rw   _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

ro   )rT   ru   rZ   substrip)r+   r   s     r2   ru   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   rp   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_linesY  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   ro   r   r6   )_dictrJ   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 ]1  }|j                  st        d|       	 |j                  |j                  d         }t	        |j                        }||z   }||| |j                  k(  sjd}	|j                  D ]+  }
|j                  |
       |
j                  t        u s'|	dz  }	- ||	z
  }|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
||<   	 4 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 Jw 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) >> G+#ENd2N-0GEN'>#CLC/L+.GCL.2 G+#ENd2N-0GEN'>#CLC/L+.GCL"519c2 )%(
)O(	)V "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| K  t 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   )r   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   z%*s%s
z	%*s%-*s  r   rb   ro   )rL   rR   rN   rM   rO   rP   r   r   r   r   _expand_help_split_linesr&   endswithr   r   rp   )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_invocation2  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>.formatS  s    &%(zJ..r4   )r   choicesstrr*   )r+   r   default_metavarchoicechoice_strsr   r   s         @r2   r   z HelpFormatter._metavar_formatterJ  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   r   formatss           r2   r   zHelpFormatter._format_argsZ  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!   )r   varsrJ   r7   r   hasattrr$   r   r*   r   _get_help_string)r+   r   paramsr0   cchoices_strs         r2   r   zHelpFormatter._expand_helpv  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   rw   rz   r|   r   r   r   r   ru   rp   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ob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r=|j                  t        ur+t        t        g}|j
                  s|j                  |v r|dz  }|S )Nrn   z
%(default)z (default: %(default)s))r   r   r   r   r   r   r   )r+   r   r   defaulting_nargss       r2   r  z.ArgumentDefaultsHelpFormatter._get_help_string  s`    	 {{<Dt#~~X-$,l#; ((FLL<L,L55D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  r.  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_namer5    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   )r5  argument_namemessage)r+   r4  r9  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)r9  r8  )r8  r   r   r9  )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   r@  r   r#   r   r   r   r   s              r2   r_   zAction.__init__J  sK     -	

	 	r4   c                 L    g d}|D cg c]  }|t        | |      f c}S c c}w )Nr?  getattrr+   namesr0   s      r2   r(   zAction._get_kwargs`  s+    
 9>>wtT*+>>>   !c                      | j                   d   S r@   )r   r:   s    r2   r   zAction.format_usageo  s    ""1%%r4   c                 *    t        t        d            )Nz.__call__() not defined)NotImplementedErrorr   r+   parser	namespacevaluesr   s        r2   __call__zAction.__call__r  s    !!$=">??r4   NNNNNFNNr6   )r$   r=   r>   r_   r(   r   rN  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__z  s     + 	6M""=1''- '-*; ;&&}5	6 9 	$Jx
#+>>$$2"	$	$ &&D))G))G* 	 		r4   c                 p    || j                   v r(t        || j                  |j                  d              y y )NrS  )r   setattrr  rW  rJ  s        r2   rN  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>   rY  r_   rN  r   __classcell__r_  s   @r2   r   r   y  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 constr?  )r   r   r\  rf  r_   r+   r   r  r   r@  r   r#   r   r   r   r   r_  s              r2   r_   z_StoreAction.__init__  ss     A: K L L (!2?(JKKlD*) 	+ 
	r4   c                 2    t        || j                  |       y r6   )ra  r  rJ  s        r2   rN  z_StoreAction.__call__  s    	499f-r4   rO  r6   r$   r=   r>   r_   rN  rc  rd  s   @r2   rf  rf    s'    
 :.r4   rf  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   r@  r   r   r   )r\  rm  r_   	r+   r   r  r@  r   r   r   r   r_  s	           r2   r_   z_StoreConstAction.__init__  s/     	/) 	0 	r4   c                 F    t        || j                  | j                         y r6   )ra  r  r@  rJ  s        r2   rN  z_StoreConstAction.__call__  s    	499djj1r4   NNFNNr6   rk  rd  s   @r2   rm  rm    s    
 "2r4   rm  c                   &     e Zd Z	 	 	 d fd	Z xZS )_StoreTrueActionc                 8    t         t        |   ||d|||       y )NTr   r  r@  r   r   r   )r\  rs  r_   r+   r   r  r   r   r   r_  s         r2   r_   z_StoreTrueAction.__init__  s,     	.) 	/ 	r4   )FFNr$   r=   r>   r_   rc  rd  s   @r2   rs  rs    s    
  r4   rs  c                   &     e Zd Z	 	 	 d fd	Z xZS )_StoreFalseActionc                 8    t         t        |   ||d|||       y )NFru  )r\  ry  r_   rv  s         r2   r_   z_StoreFalseAction.__init__  s,     	/) 	0 	r4   )TFNrw  rd  s   @r2   ry  ry    s    
  r4   ry  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 appropriaterh  r?  )r   r   r\  r|  r_   ri  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   )rC  r  rB   r&   ra  r+   rK  rL  rM  r   r9   s         r2   rN  z_AppendAction.__call__-  :    	499d3E"V	499e,r4   rO  r6   rk  rd  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   r@  r   r   r   r   )r\  r  r_   ro  s	           r2   r_   z_AppendConstAction.__init__6  s2     	 $0) 	1 	r4   c                     t        || j                  d       }t        |      }|j                  | j                         t        || j                  |       y r6   )rC  r  rB   r&   r@  ra  r  s         r2   rN  z_AppendConstAction.__call__H  s>    	499d3E"TZZ 	499e,r4   rq  r6   rk  rd  s   @r2   r  r  4  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_   rv  s         r2   r_   z_CountAction.__init__Q  s+     	lD*) 	+ 	r4   c                 n    t        || j                  d       }|d}t        || j                  |dz          y )Nr   rb   )rC  r  ra  )r+   rK  rL  rM  r   counts         r2   rN  z_CountAction.__call___  s2    	499d3=E	499eai0r4   )NFNr6   rk  rd  s   @r2   r  r  O  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   r_  s        r2   r_   z_HelpAction.__init__h  s(    
 	k4)) 	* 	r4   c                 D    |j                          |j                          y r6   )
print_helpexitrJ  s        r2   rN  z_HelpAction.__call__t  s    r4   r6   r$   r=   r>   r   r_   rN  rc  rd  s   @r2   r  r  f  s     !	
r4   r  c                   0     e Zd Zdeedf fd	ZddZ xZS )_VersionActionNz&show program's version number and exitc                 D    t         t        |   |||d|       || _        y r  )r\  r  r_   version)r+   r   r  r  r   r   r_  s         r2   r_   z_VersionAction.__init__{  s1     	nd,) 	- 	 r4   c                     | j                   }||j                   }|j                         }|j                  |       |j                  |j	                         t
        j                         |j                          y r6   )r  _get_formatterr   _print_messageru   _sysstdoutr  )r+   rK  rL  rM  r   r  rj   s          r2   rN  z_VersionAction.__call__  s[    ,,?nnG))+	7#i335t{{Cr4   r6   r  rd  s   @r2   r  r  y  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  supr_  s          r2   r_   z/_SubParsersAction._ChoicesPseudoAction.__init__  sU    !!Gd7TYYw%777)>>ECLLD!(  *r4   rw  rd  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   r_  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   r   r  r  r&   r  )r+   r0   kwargsr  aliasr   choice_actionrK  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   ra  r  KeyErrorr*   r   r   parse_known_argsr  r9   
setdefault_UNRECOGNIZED_ARGS_ATTRrC  r   )r+   rK  rL  rM  r   r  r-   rr   msgsubnamespacekeyr1   s               r2   rN  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  rN  rc  rd  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   )rC  r  rB   r   ra  r  s         r2   rN  z_ExtendAction.__call__  r  r4   r6   )r$   r=   r>   rN  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  r   r   r   r  r  r  OSErrorr   )r+   stringr  err   r9  s   `     r2   rN  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+   rr   r  r/   kwargs_strs         r2   r3   zFileType.__repr__-  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_   rN  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   )ra  )r+   r  r0   s      r2   r_   zNamespace.__init__@  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__D  s%    %+!!DzT%[((r4   c                     || j                   v S r6   )r8   )r+   r  s     r2   __contains__zNamespace.__contains__I  s    dmm##r4   N)r$   r=   r>   r_   r  r  r<   r4   r2   r   r   9  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registerrf  rm  rs  ry  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  r_  s        r2   r_   z_ActionsContainer.__init__O  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+   rr   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+   rr   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  rV  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  r   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   )r   r  r   r   r   r   )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  r   r  )	r  r   r   r&   r   r   lstripreplacer   )	r+   rr   r  r   long_option_stringsr   r  r  dest_option_strings	            r2   r  z&_ActionsContainer._get_optional_kwargs.  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_classP  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  rC  r  r   r   )r+   handler_func_namer  s      r2   r  z_ActionsContainer._get_handlerT  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_conflict]  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_actionsr9  r   conflict_strings         r2   _handle_conflict_errorz(_ActionsContainer._handle_conflict_errork  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   rV  r  r   r  r  )r+   r   r*  r   s       r2   _handle_conflict_resolvez*_ActionsContainer._handle_conflict_resolvet  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,  r.  rc  rd  s   @r2   r  r  M  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_initr_  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   r_  s     r2   r  z_ArgumentGroup._add_action  s-    ~t8@""6*r4   c                 b    t         t        |   |       | j                  j	                  |       y r6   )r\  r
  r  r   rV  r3  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)rZ  warnDeprecationWarningr\  r  r+   rr   r  r_  s      r2   r  z!_ArgumentGroup.add_argument_group  s/    4'	

 w)4:6::r4   NN)r$   r=   r>   r_   r  r  r  rc  rd  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   r_  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   r   r   r?  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   )r?  r  r   rV  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   r6  )rZ  r9  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  rc  rd  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  r   _positionals
_optionals_subparsersr  r   r   r  r  r  r  )r+   r[   r   r  rM  parentsrN  r  rO  r  r  rP  rQ  rR  	superinit	add_grouprG  default_prefixrk   defaultsr_  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  rN  r  rP  rB  rD  s      r2   r(   zArgumentParser._get_kwargs!  s+    
 9>>wtT*+>>>rF  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<   )rU  r  r   r  r#   r   r  rS  r   r  _get_positional_actionsr  r   r   ru   r   r  r  )	r+   r  r  r  rj   r   r   parsers_classr   s	            r2   add_subparserszArgumentParser.add_subparsers/  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   rT  r  rS  r  s     r2   r  zArgumentParser._add_actionN  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_actionsU  s/    "mm*((  * 	* *   'c                 X    | j                   D cg c]  }|j                  s| c}S c c}w r6   rc  r  s     r2   r^  z&ArgumentParser._get_positional_actionsZ  s/    "mm.,,  . 	. .re  c                     | j                  ||      \  }}|r.t        d      }| j                  |dj                  |      z         |S Nzunrecognized arguments: %sr   )r  r   r  r*   r+   rr   rL  rL  r  s        r2   
parse_argszArgumentParser.parse_argsb  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  rL  r7   r   r  r  r   r  r   ra  r  rR  _parse_known_argsr   r  r   r  r   rC  delattr)r+   rr   rL  r   r  errs         r2   r  zArgumentParser.parse_known_argsi  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   rR  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   r   r5  r   r   )r   argument_stringsr   argument_valuesconflict_actionr  action_nameaction_conflictsrL  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(  rh|d   |vra|dk7  r\|j                  |g |f       |d   }	|	|d   z   }|dd  xs d }
j                  }||v r||   }|
}nt	        d      }t        |||z        |dk(  r| dz   }|g}|j                  |||f       nNt	        d      }t        |||z        | dz   }|d  } |||      }||z   }|| }|j                  |||f       n|D ]  \  }}} |||        |S )Nrb   rp  r   rn   zignored explicit argument %r)_match_argumentr&   r  r  r   r   )start_indexoption_tupler   r   explicit_argmatch_argumentaction_tuples	arg_countr  charnew_explicit_argoptionals_mapr  stoprr   r   selected_patternsr-   arg_strings_patternextrasoption_string_indicesr+   r{  s                    r2   consume_optionalz:ArgumentParser._parse_known_args.<locals>.consume_optional  s    1=L2>/FM< "11NM >MM+k":;&?*  + .vs ;I
 !--E!Q)!,E9(B.%,,fb--HI,Q/(,|A(>+7+;+Ct((,(C(C(M9%2=%AF+;L"#$B"CC"/l8J"KK #a*Q ,~%,,fdM-JK
   >?+FC,4FGG (!OE(;EF(C% .v7H II 9,D&uT2D!((&$)FGs | 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  rr   r-   r  r   r+   r{  s          r2   consume_positionalsz=ArgumentParser._parse_known_args.<locals>.consume_positionals$  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   )rO  _read_args_from_filesr  r   r   r  r   iterr&   _parse_optionalr*   r   r^  rM   rL   r  r   r5  r   r   r   r  r  rC  ra  
_get_valuer  r   r   r   )#r+   r-   rL  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   rE  r  rx  r  r  r  r   ry  rz  r{  s#   ```                        @@@@@@@@r2   rl  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*J	 J	\ 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  )rO  r&   r   r  getfilesystemencodinggetfilesystemencodeerrorsreadr%  convert_arg_line_to_argsr  r   r  r  r   )r+   r-   new_arg_stringsr  	args_filearg_liner/   rn  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  r   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           
      t   |sy |d   | j                   vry || j                  v r| j                  |   }||d fS t        |      dk(  ry d|v r7|j                  dd      \  }}|| j                  v r| j                  |   }|||fS | j	                  |      }t        |      dkD  rLd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 fS c c}}}w )Nr   rb   r   r!   )r  matchesz4ambiguous option: %(option)s could match %(matches)sr   )r  r  r   split_get_option_tuplesr*   r   r  r  r  r  )
r+   r  r   r   r  option_tuplesrE  rr   r  r  s
             r2   r  zArgumentParser._parse_optional  s    !} 1 11 44400<F:t++ z?a **4*:*:3*B'M< ; ;;44]C}l:: //
; }!ii;H!J !J7FM< "/ !J KG(W=DJKCJJsTz" 1$)ML
 ((..z:66 * Z%%3!Js   2D3c                    g }| j                   }|d   |v r{|d   |v rt| j                  rfd|v r|j                  dd      \  }}n|}d }| j                  D ]9  }|j	                  |      s| j                  |   }|||f}|j                  |       ; |S |d   |v r|d   |vr|}d }|d d }|dd  }	| j                  D ]d  }||k(  r&| j                  |   }|||	f}|j                  |       .|j	                  |      s@| j                  |   }|||f}|j                  |       f |S | j                  t        d      |z         |S )Nr   rb   r   rE   zunexpected option string: %s)r  rQ  r  r  rW  r&   r  r   )
r+   r   r   r  option_prefixr  r   r   short_option_prefixshort_explicit_args
             r2   r  z!ArgumentParser._get_option_tuples	  s    !!u$q)9U)B  -'2?2E2Ec12M/M<$1M#'L%)%@%@ +M$//>!%!<!<]!K$m\Ac*	+< + 1&=+;5+H)ML"/"3!.qr!2!%!<!< ' $77!88GF -1CCCMM#&"--m<!88GF -=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-*rp  rn   r  )
r   r   r   r   r   r   r   r*   r   r   )r+   r   r   r  s       r2   r  z!ArgumentParser._get_nargs_pattern4	  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 rh  )parse_known_intermixed_argsr   r  r*   ri  s        r2   parse_intermixed_argsz$ArgumentParser.parse_intermixed_argse	  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   )r9  zDo not expect z in F)r^  r   r   r   r  r  r   r  r   r   
save_nargsr   r   save_defaultr  r  rC  rZ  r9  rm  rd  r   save_required)r+   rr   rL  r   r   ar   
save_usageremaining_argsr9  r   r  s               r2   r  z*ArgumentParser.parse_known_intermixed_argsl	  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                 R   |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 )NrR  rb   r   )r   r   r   rV  r   r   r   r@  r   r   r   r  _check_valuer   r   r   )r+   r   r-   r1   r  vs         r2   rs  zArgumentParser._get_values	  s%   <<	22""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H$
	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  r   r   r   r   r  r   rC  r'   )	r+   r   r  r  r  r   rn  r0   rr   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'   r   r   )r+   r   r1   rr   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  ru   )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  rz   r  r   r   r|   rM  ru   )r+   rj   action_groups      r2   ru   zArgumentParser.format_help
  s    '')	 	DJJ ;;	= 	4++, !// 	$L##L$6$67|778##L$?$?@!!#		$ 	4;;' $$&&r4   c                 :    | j                  | j                        S )Nr   )rN  r[   r:   s    r2   r  zArgumentParser._get_formatter4
  s    ###33r4   c                 h    |t         j                  }| j                  | j                         |       y r6   )r  r  r  r   r+   files     r2   print_usagezArgumentParser.print_usage:
  s)    <;;DD--/6r4   c                 h    |t         j                  }| j                  | j                         |       y r6   )r  r  r  ru   r  s     r2   r  zArgumentParser.print_help?
  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+   r9  r  s      r2   r  zArgumentParser._print_messageD
  sB    &4;;D

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