
    6bhi                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlmZ d dlmZ d dlmZmZ d dlmZ  G d dej,                        Z G d d	ej0                        Z G d
 dej0                        Zej4                   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jD                        Z# G d de$      Z%efZ& e%de&i       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 d* d+e'      Z0 G d, d-e'      Z1 G d. d/e'      Z2 G d0 d1e'      Z3 G d2 d3e'      Z4 G d4 d5e'      Z5 G d6 d7e'      Z6 G d8 d9e'      Z7 G d: d;e'      Z8 G d< d=e'      Z9 G d> d?e'      Z: G d@ dAe'      Z; G dB dCe'      Z< G dD dEe'      Z= G dF dGe'      Z> G dH dIe'      Z? G dJ dKe'      Z@ G dL dMe'      ZA G dN dOe'      ZB G dP dQe'      ZC G dR dSe'      ZD G dT dUe'      ZE G dV dWe'      ZF G dX dYe'      ZG G dZ d[e'      ZH G d\ d]e'      ZI G d^ d_e'      ZJ G d` dae'      ZK G db dce'      ZL G dd dee'      ZM G df dge'      ZN G dh die'      ZO G dj dke'      ZP G dl dme'      ZQ G dn doe      ZR G dp dqe'      ZS G dr dse'      ZT G dt due'      ZU G dv dwe'      ZV G dx dye'      ZW G dz d{e'      ZX G d| d}e'      ZY G d~ de'      ZZ G d de'      Z[ G d de'      Z\ G d de'      Z] G d de'      Z^ G d de'      Z_ G d de'      Z` G d de'      Za G d de'      Zb G d de'      Zc G d de'      Zd G d de'      Ze G d de'      Zf G d de'      Zg G d de'      Zh G d de'      Zi G d de'      Zj G d de'      Zk G d de'      Zl G d de'      Zm G d de'      Zn G d de'      Zo G d de'      Zp G d de'      Zq G d de'      Zr G d de'      Zs G d de'      Zt G d de'      Zu G d de'      Zv G d de'      Zw G d de'      Zx G d de'      Zy G d de'      Zz G d de'      Z{ G d de'      Z| G dĄ de'      Z} G dƄ dee'      Z~ G dȄ dee'      Z G dʄ de      Z e       Z e       Z G d̄ dͫ      Z edΫ      Z edϫ      Z edЫ      Z edѫ      Z edҫ      Z edӫ      Z G dԄ de      Z G dք dee'      Z G d؄ dee'      Z G dڄ dee'      Z G d܄ de      Zej                   G dބ dee'             Zej                   G d dee'             Zej                   G d dee'             Zej                   G d de             Z G d de      Z G d de      Z G d de'      Z G d de'      Z G d de'      Z G d de      Z G d de'      Z G d de      Z G d de'      Z G d de      Z G d de      Z G d de      Z G d de      Z G d  de      Z G d dee      Z G d dee      Z G d dee      Z G d d	ee      Z G d
 dee      Z G d dee      Z G d dee      Z G d dee      Z G d dee      Z G d dee      Z G d dee      Z G d dee      Z G d de      Z G d dee      Z G d dee      Z G d  d!ee      Z G d" d#ee      Z G d$ d%ee      Z G d& d'ee      Z G d( d)ee      Z G d* d+ee      Z G d, d-e      Z G d. d/e      Z G d0 d1e      Z G d2 d3e$      ZefZ& ed4e&i       Z G d5 d6e      Z G d7 d8e      Z G d9 d:e      Z G d; d<e      Z G d= d>e      Z G d? d@e      Z G dA dBe      Z G dC dDe      Z G dE dFe      Z G dG dHe      Z G dI dJe      Z G dK dLe      Z G dM dNe      Z G dO dPe      Z G dQ dRe      Z G dS dTe      Z G dU dVe      Z G dW dXe      Z G dY dZe      Z G d[ d\e      Z G d] d^e      Z G d_ d`e      Z G da dbe      Z G dc dde      Z G de dfe      Z G dg dhe      Z G di dje      Z G dk dle      Z G dm dne      Z G do dpe      Z G dq dre      Z G ds dte      Z G du dve      Z G dw dxe      Z G dy dze      Z G d{ d|e      Z G d} d~e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zd Zedk(  rZ eej                        dkD  r0ej                  d   dk(  r ee        ej                  d         ej                          yy(      N)StrEnum)	os_helper)TestTranslationsBaseupdate_translation_snapshots)mockc                   (     e Zd Z	 d fd	Zd Z xZS )StdIOBufferc                     |j                  d      }t        | 	  t        j                  t        j
                  |            d|       y )Nutf-8)newline)encodesuper__init__ioBufferedWriterBytesIO)selfinitial_valuer   	__class__s      </opt/python-3.12.12/usr/lib/python3.12/test/test_argparse.pyr   zStdIOBuffer.__init__    s@    %,,W5**2::m+DE ' 	 	3    c                     | j                          | j                  j                  j                         j	                  d      S )Nr   )flushbufferrawgetvaluedecoder   s    r   r   zStdIOBuffer.getvalue%   s-    

{{'')0099r   ) 
)__name__
__module____qualname__r   r   __classcell__r   s   @r   r	   r	      s    3
:r   r	   c                       e Zd Zd Zd Zy)StdStreamTestc                     t        j                         }t        j                  d       5  t	        j
                  d      5  |j                  dd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nargparse._sys.exitr   foo)statusmessage)argparseArgumentParser
contextlibredirect_stderrr   patchexitr   parsers     r   test_skip_invalid_stderrz&StdStreamTest.test_skip_invalid_stderr,   sX    ((*&&t,JJ+,KKq%K0 - -,,, -,s#   A1 A%A1%A.	*A11A:c                 |   t        j                         }|j                  |j                  t	        j
                  |j                  dg      fD ]  }| j                  |      5  t        j                  d       5  t               5 }t        j                  |      5  t        j                  d      5   |        | j                  |j                         d       d d d        d d d        d d d        d d d        d d d         y # 1 sw Y   ,xY w# 1 sw Y   0xY w# 1 sw Y   4xY w# 1 sw Y   8xY w# 1 sw Y   xY w)N-h)funcr)   zusage:)r-   r.   print_usage
print_help	functoolspartial
parse_argssubTestr/   redirect_stdoutr	   r0   r   r1   assertRegexr   )r   r4   r8   mocked_stderrs       r   test_skip_invalid_stdoutz&StdStreamTest.test_skip_invalid_stdout4   s    ((*f//$8
D $'**40**=9

/0  !7!7!99E 1 :  1 ('
 10 :9  10 ('sl   "D28D&D	D/(DDD	'D&/D2DDDD	D#D&&D/+D22D;	N)r!   r"   r#   r5   rB    r   r   r'   r'   *   s    1Fr   r'   c                       e Zd Zd Zy)TestCasec                 T    | j                  t        j                               }d|d<   y )N80COLUMNS)enterContextr   EnvironmentVarGuardr   envs     r   setUpzTestCase.setUpI   s&     	 = = ?@Ir   N)r!   r"   r#   rM   rC   r   r   rE   rE   G   s    r   rE   c                   $    e Zd Zd Zd Zd Zd Zy)TempDirMixinc                     t        j                         | _        t        j                         | _        t        j                  | j                         y N)tempfilemkdtemptemp_dirosgetcwdold_dirchdirr   s    r   rM   zTempDirMixin.setUpT   s/     ((*yy{
r   c                 |   t        j                  | j                         t        j                  | j                  d      D ]Y  \  }}}|D ]N  }t        j
                  t         j                  j                  | j                  |      t        j                         P [ t        j                  | j                  d       y )NF)topdownT)rU   rX   rW   walkrT   chmodpathjoinstatS_IWRITEshutilrmtree)r   rootdirsfilesnames        r   tearDownzTempDirMixin.tearDownY   sv    
!#!FD$dmmT:DMMJ  "G 	dmmT*r   c                     t         j                  j                  | j                  |      }t	        |dd      5 }|j                  |       d d d        |S # 1 sw Y   |S xY w)Nwr   encoding)rU   r]   r^   rT   openwrite)r   filename	file_pathfiles       r   create_writable_filez!TempDirMixin.create_writable_file`   sK    GGLL9	)S73tJJx  4 4s   AAc                 j    t        j                  | j                  |      t        j                         y rQ   )rU   r\   rq   r_   S_IREAD)r   rn   s     r   create_readonly_filez!TempDirMixin.create_readonly_filef   s    
**84dllCr   N)r!   r"   r#   rM   rg   rq   rt   rC   r   r   rO   rO   Q   s     
+Dr   rO   c                       e Zd Zd Zy)Sigc                      || _         || _        y rQ   )argskwargsr   rx   ry   s      r   r   zSig.__init__k   s    	r   Nr!   r"   r#   r   rC   r   r   rv   rv   i   s    r   rv   c                       e Zd Zd Zd Zd Zy)NSc                 :    | j                   j                  |       y rQ   )__dict__update)r   ry   s     r   r   zNS.__init__r   s    V$r   c                     t        | j                  j                               }dj                  |D cg c]  }d|z  	 c}      }t	        |       j
                  d|dS c c}w )Nz, z%s=%r())sortedr   itemsr^   typer!   )r   sorted_itemstup	kwarg_strs       r   __repr__zNS.__repr__u   sU    dmm1134IIEw}EF	:..	:: Fs   A!c                 0    t        |       t        |      k(  S rQ   )varsr   others     r   __eq__z	NS.__eq__z   s    DzT%[((r   N)r!   r"   r#   r   r   r   rC   r   r   r}   r}   p   s    %;
)r   r}   c                       e Zd ZddZy)ArgumentParserErrorNc                 l    t         j                  | |||       || _        || _        || _        || _        y rQ   )	Exceptionr   r,   stdoutstderr
error_code)r   r,   r   r   r   s        r   r   zArgumentParserError.__init__   s2    4&&9$r   )NNNr{   rC   r   r   r   r   ~   s    %r   r   c           
         t        t        j                  t              st        t        j                  t              r | |i |S t        j                  }t        j                  }t               t        _        t               t        _        	 	  | |i |}t        t        |            D ]  }t        ||      }|t        j                  u rt        |||       /|t        j                  j                  u rt        ||t        |dt                     h|t        j                  u rt        |||       |t        j                  j                  u st        ||t        |dt                      ||t        _        |t        _        S # t        $ r\}|j                  }	t        j                  j                         }
t        j                  j                         }t        d|
||	      d d }~ww xY w# |t        _        |t        _        w xY w)Nr   
SystemExit)
isinstancesysr   r	   r   listr   getattrsetattrr   BIN_STDOUT_SENTINELBIN_STDERR_SENTINELr   coder   r   )r=   rx   ry   
old_stdout
old_stderrresultkeyattrer   r   r   s               r   stderr_to_parser_errorr      s    #**k*j[.Q4*6** JJCJCJ 	>00FDL)vs+3::%FC4SZZ...FCXGZ)[\SZZ'FC4SZZ...FCXGZ)[\ *   

  	>66DZZ((*FZZ((*F%ffd49=>		>  

s,   C F F 	G)AG$$G))G, ,Hc                   2     e Zd Z fdZ fdZ fdZ xZS )ErrorRaisingArgumentParserc                 >    t         t        | 
  }t        |g|i |S rQ   )r   r   r=   r   )r   rx   ry   r=   r   s       r   r=   z%ErrorRaisingArgumentParser.parse_args   s%    5tG
%jB4B6BBr   c                 >    t         t        | 
  }t        |g|i |S rQ   )r   r   r2   r   )r   rx   ry   r2   r   s       r   r2   zErrorRaisingArgumentParser.exit   s%    /;%d<T<V<<r   c                 >    t         t        | 
  }t        |g|i |S rQ   )r   r   errorr   )r   rx   ry   r   r   s       r   r   z ErrorRaisingArgumentParser.error   s%    0$=%e=d=f==r   )r!   r"   r#   r=   r2   r   r$   r%   s   @r   r   r      s    C=> >r   r   c                       e Zd Z	 d Zy)ParserTesterMetaclassc                     |dk(  ry t        | d      st               | _        t        | d      st        | _        d }d }d }d }d } G d	 d
t
              }	|||fD ]  }
||fD ]  } |	| |
|         y )NParserTestCaseparser_signatureparser_classc                 `    	 |D ](  } | j                   |j                  i |j                   * y rQ   )add_argumentrx   ry   )r4   argument_signaturessigs      r   	no_groupsz1ParserTesterMetaclass.__init__.<locals>.no_groups   s,    :*###SXX<< +r   c                     	 | j                  d      }|D ](  } |j                  |j                  i |j                   * y )Nr*   )add_argument_groupr   rx   ry   )r4   r   groupr   s       r   	one_groupz1ParserTesterMetaclass.__init__.<locals>.one_group   s<    F--e4E*"""CHH;

; +r   c                     	 t        |      D ]?  \  }}| j                  d|z        } |j                  |j                  i |j                   A y )Nzfoo:%i)	enumerater   r   rx   ry   )r4   r   ir   r   s        r   many_groupsz3ParserTesterMetaclass.__init__.<locals>.many_groups   sJ    B#$78311(Q,?"""CHH;

; 9r   c                 &    	 | j                  |      S rQ   )r=   )r4   rx   s     r   listargsz0ParserTesterMetaclass.__init__.<locals>.listargs   s    5$$T**r   c                     	 t         j                  }|d   g|z   t         _        	 | j                         |t         _        S # |t         _        w xY w)Nr   )r   argvr=   )r4   rx   old_sys_argvs      r   sysargsz/ParserTesterMetaclass.__init__.<locals>.sysargs   sA    :88L$Q(4/CH(((*'<s   A   Ac                   $    e Zd Zd Zd Zd Zd Zy)0ParserTesterMetaclass.__init__.<locals>.AddTestsc                 H   || _         || _        | j                   j                  }| j                  j                  }| j                  | j                  fD ]>  }|j                  }|||f}dj                  |      }	|fd}
	 |	|
_        t        ||	|
       @ y # t        $ r Y w xY w)N_c                      ||        y rQ   rC   r   	test_funcs     r   wrapperzJParserTesterMetaclass.__init__.<locals>.AddTests.__init__.<locals>.wrapper
  	    !$r   )_add_arguments_parse_argsr!   test_failurestest_successesr^   	TypeErrorr   )r   
tester_clsadd_argumentsr=   add_arguments_nameparse_args_namer   	func_namenames	test_namer   s              r   r   z9ParserTesterMetaclass.__init__.<locals>.AddTests.__init__   s    &3##- %)%8%8%A%A""&"2"2";";"&"4"4d6I6I!JI ) 2 2I%'9?JE #I09 (+4( J	7; "K % s   >B	B! B!c                     |j                   j                  }|j                   j                  } |j                  |i |}| j	                  ||j
                         |S rQ   )r   rx   ry   r   r   r   )r   testerrx   ry   r4   s        r   _get_parserz<ParserTesterMetaclass.__init__.<locals>.AddTests._get_parser  sV    ..330077,,,d=f=##FF,F,FGr   c                 0   | j                  |      }|j                  D ]^  }|j                         }|j                  |      5  |j	                  t
        |      5  |j                  |       d d d        d d d        ` y # 1 sw Y   xY w# 1 sw Y   wxY w)Nrx   )msg)r   failuressplitr>   assertRaisesr   r=   )r   r   r4   args_strrx   s        r   r   z>ParserTesterMetaclass.__init__.<locals>.AddTests.test_failures  s}    ))&1 &H#>>+DT2#001D$0O"--d3 P 32 !0 PO 32s$   BB -B B	BB	c                 $   | j                  |      }|j                  D ]d  \  }}t        |t              r|j	                         }|j                  |      5  | j                  ||      }|j                  ||       d d d        f y # 1 sw Y   qxY w)Nr   )r   	successesr   strr   r>   r   assertEqual)r   r   r4   rx   expected_ns	result_nss         r   r   z?ParserTesterMetaclass.__init__.<locals>.AddTests.test_successes!  s}    ))&1)/)9)9%D+!$,#zz|T2$($4$4VT$B	**;	B 32 *: 32s   %BB	N)r!   r"   r#   r   r   r   r   rC   r   r   AddTestsr      s    <&4Cr   r   )hasattrrv   r   r   r   object)clsrf   basesbodydictr   r   r   r   r   r   r   r=   s               r   r   zParserTesterMetaclass.__init__   s    ## s./#&5C sN+9C
	=
	<	<	+	(+	Cv +	C^ (K@M'1
mZ8 2 Ar   Nr{   rC   r   r   r   r      s    a9r   r   r   c                       e Zd Z	  ed      gZg dZd ed      fd ed      fd ed      fd	 ed
      fd ed
      fgZy)TestOptionalsSingleDash-x)r   a--foo-x --fooz-x -yr   Nx-x ar   -xaz-x -1-1z-x-1r!   r"   r#   rv   r   r   r}   r   rC   r   r   r   r   7  sY    ;t9+8H	R$Z	c	S		"t*	dIr   r   c                   r   e Zd Z	  edd       eddd       ed      gZg d	Zd
 eddd      fd eddd      fd eddd      fd eddd      fd eddd      fd eddd      fd eddd      fd eddd      fd eddd      fd eddd      fd eddd      fd eddd      fgZy)TestOptionalsSingleDashCombinedr   
store_trueactionz-yyystore_const*   r  const-z)r   r   r   r   z-x -zz-z -xz-yxz-yz az-yyyxz-yyyzaz-xyzaz-x=r   FN)r   yyyzT-zar   -z az-xzaz-xz az-x -zaz-x -z a-yz-x -yyy -zaz-x -yyy -z ar   rC   r   r   r   r   E  s	   ; 	D&F=3D	
CH 
R%TT*+	rDdd+,	U,-	e-.	d,-	"t-.	2$#./	B43/0	rErT*+	et,-	TrS12	dc23Ir   r   c                       e Zd Z	  ed      gZg dZd ed      fd ed      fd ed	      fd
 ed      fd ed      fgZy)TestOptionalsSingleDashLong-foo)r  r   r   z
-foo --fooz-foo -y-fooar   Nr*   z-foo ar   z-foo -1r   z-fo a-f ar   rC   r   r   r  r  _  sY    Kv;-GH	RD\	2#;	B4L!	"+	Ir   r  c                       e Zd Z	  ed       ed       ed      gZg dZd eddd      fd ed	dd      fd
 ed	dd      fd eddd      fd eddd      fd edd	d      fd eddd	      fgZy)&TestOptionalsSingleDashSubsetAmbiguous-f-foobar-foorab)r  r  -fo-foo bz-foobz-foobaz-foorar   N)ffoobarfoorabr  r   -fa-foaoar  ooa	-foobar a	-foorab ar   rC   r   r   r  r  m  s    Gt9c)nc)nEKH	R$tD12	c$t45	Sd34	d456	"uT$78	b4D9:	b4S9:Ir   r  c                   X   e Zd Z	  ed       ed      gZg dZd edd      fd edd      fd	 edd      fd
 edd      fd edd      fd edd      fd edd      fd edd      fd edd      fd edd      fd edd      fd edd      fd edd      fgZy) TestOptionalsSingleDashAmbiguousr  r  )	r  r  r  r  r  r  r  z-f=az-foo=br   N)r  r  z-foob ar   z-foob=az-foor az-foor=az-fooba az-fooba=az-foora az-foora=ar!  z	-foobar=ar"  z	-foorab=ar   rC   r   r   r$  r$  }  s    Ay>3y>:"H 
RtD)*	Bc$/0	Bc$/0	Bd3/0	Bd3/0	Rs401	Rs401	RtC01	RtC01	bD12	bD12	bS12	bS12Ir   r$  c                       e Zd Z	  edd      gZg dZd ed      fd ed	      fd
 ed	      fd ed      fgZy)TestOptionalsNumericr   onedest)r   r   z-1 --fooz-1 -yz-1 -1z-1 -2r   N)r'  z-1 ar   z-1az-1-2-2r   rC   r   r   r&  r&    sQ    2t%01AH	RD\		s		Ir   r&  c                       e Zd Z	  ed      gZg dZd ed      fd ed      fd ed      fd	 ed
      fd ed
      fgZy)TestOptionalsDoubleDashr   )r   r  r  r   z--foo -xz--foo --barr   Nr  z--foo ar   z--foo=az
--foo -2.5z-2.5z
--foo=-2.5r   rC   r   r   r,  r,    sY    ;w<.FH	RD\	B3K 	B3K 	rf~&	rf~&Ir   r,  c            
           e Zd Z	  edd       ed      gZg dZd edd	      fd
 edd	      fd edd	      fd edd	      fd edd	      fd edd	      fgZy)#TestOptionalsDoubleDashPartialMatch--badgerr   r  z--bat)--bar--b--ba--b=2z--ba=4	--badge 5r   FN)badgerbatz--bat XX--badT--badg--badger   rC   r   r   r.  r.    s    A 	J|,G HH	Ru$'(	Be-.	"Dd+,	2Tt,-	Bd-.	Rt./Ir   r.  c                       e Zd Z	  edd       ed      gZg dZd edd	      fd
 edd	      fd edd	      fd edd	      fd edd	      fd edd	      fd edd	      fgZy)"TestOptionalsDoubleDashPrefixMatchr/  r   r  r2  )r0  r1  r2  r3  r4  r   FN)r5  baz--ba Xr7  z--ba=Xr8  Tr9  r:  r   rC   r   r   r<  r<    s    I 	J|,F >H	Ru&'	2Us+,	2Us+,	"DT*+	2Td+,	Bdt,-	Rt-.Ir   r<  c                       e Zd Z	  edd       ed       eddd      gZg d	Zd
 eddd      fd eddd      fd eddd      fd eddd      fd eddd      fd eddd      fgZy)TestOptionalsSingleDoubleDashr  r   r  r0  -bazr  r  r  )r0  -fbarz-fbazz-bazf-b BBr   FNr  barbazTz--ba BrC  z
-f --bar Bz-f -bz-ba -fr   rC   r   r   r?  r?    s    F 	D&GF=3
 AH	R%Tt,-	rDd-.	23D12	rDct45	"t2./	2$B/0Ir   r?  c                       e Zd Z	  edd      Z edd       ed       edd	d
      gZg dZd eddd      fd eddd      fd eddd      fd eddd      fd eddd
      fd eddd
      fgZy)!TestOptionalsAlternatePrefixChars+:/Fprefix_charsadd_help+fr   r  ::bar/bazr  r  r  )r0  rA  rB  rC  r  --bar Br@  r7   --helpz+hz::helpz/helpr   NrD  T::ba BrC  
+f ::bar B+f /b/ba +f	r!   r"   r#   rv   r   r   r   r}   r   rC   r   r   rH  rH    s    C>D&GF=3
 qH	R%Tt,-	rDd-.	23D12	rDct45	"t2./	2$B/0Ir   rH  c                       e Zd Z	  edd      Z edd       ed       edd	d
      gZg dZd eddd      fd eddd      fd eddd      fd eddd      fd eddd
      fd eddd
      fgZy)*TestOptionalsAlternatePrefixCharsAddedHelprI  TrJ  rM  r   r  rN  rO  r  r  r  )r0  rA  rB  rC  r  rP  r@  r   FNrD  rR  rC  rS  rT  rU  rV  rC   r   r   rX  rX    s    + =D&GF=3
 HH	R%Tt,-	rDd-.	23D12	rDct45	"t2./	2$B/0Ir   rX  c            	           e Zd Z	  edd      Z edd       edd       edd      gZg d	Zd
 eddd      fd eddd      fd eddd      fd eddd      fgZy)2TestOptionalsAlternatePrefixCharsMultipleShortArgsz+-FrJ  r   r   r  z+yz+z)-wz-xyzz+xr  z+xyzr   r   yr	  Tz+y -xz+yz -xNrV  rC   r   r   rZ  rZ    s    Ju=D&D&D&
H 
R%5E*+	rDEU+,	"ttu-.	2-.	Ir   rZ  c                       e Zd Z	  eddddd      gZg dZd ed	
      fd ed
      fd ed
      fd ed
      fd ed
      fgZy)TestOptionalsShortLong-v	--verbose-nz--noisyr   r  )z--x --verbosez-Nr   z-v xr   F)verboseTNr   rC   r   r   r_  r_  (  sn    F 	D+tY|D 4H	R	r$ 	b&'	r$ 	Bt$%Ir   r_  c                       e Zd Z	  ed       edd      gZdgZd edd	      fd
 edd	      fd edd	      fd edd	      fgZy)TestOptionalsDestz	--foo-bar--bazzabbazr(  r   z--foo-bar fr  N)foo_barrg  z--baz ggz--foo-bar h --baz ihr   z--baz j --foo-bar kkjr   rC   r   r   re  re  8  sf    4{+Sx-HIuH	3t45	BtC01	3s ;<	3s ;<	Ir   re  c                   ~    e Zd Z	  ed       edd      gZdgZd edd      fd	 ed
d      fd edd      fgZy)TestOptionalsDefaultr   r  r  defaultr   r   Nr   r]  z-xxr   z-yyr]  r   rC   r   r   rn  rn  E  sU    4t9c$&;<uH	R$"	SB 	TS!"Ir   rn  c                   T    e Zd Z	  ed      gZddgZd ed      fd ed      fgZy)TestOptionalsNargsDefaultr   r   r   Nr   r   r   rC   r   r   rs  rs  Q  s9    At9+T{H	R$Z	cIr   rs  c                   Z    e Zd Z	  edd      gZddgZd ed      fd edg      fgZy)	TestOptionalsNargs1r      nargsr   r   Nr   r   r   rC   r   r   ru  ru  \  s?    0t1-.T{H	R$Z	seIr   ru  c                   \    e Zd Z	  edd      gZg dZd ed      fd eg d	      fgZy)
TestOptionalsNargs3r      rw  )r   r   r   -x a ba -xa -x br   Nr   z-x a b cr   bcr   rC   r   r   rz  rz  g  s:    1t1-.>H	R$Z	R/*+Ir   rz  c                   X   e Zd Z	  edd       eddd       eddd	       ed
dedd      gZdgZd edddd      fd edddd      fd edddd      fd edddd      fd edddd      fd edddd      fd edddd      fd
 edddd      fd edddd      fg	Zy)TestOptionalsNargsOptionalr[  ?rw  r   r  )rx  r  r  spamrx  rp  r  4284)rx  r   r  rp  2r   NT   ri   r   r]  r	  z-w 2z-x 2z-y 2z-z 2   	r!   r"   r#   rv   intr   r   r}   r   rC   r   r   r  r  r  s    : 	DD2&DV,D#T4@	 uH	R$$&B/0	rDDFb12	cTVr23	rDB&B/0	dcVr23	rDDDB/0	ddcR01	rDDFb12	ddf23
Ir   r  c                       e Zd Z	  edd       eddd      gZdgZd ed	d
      fd eg d
      fd edgd
      fd eddgd
      fd ed	g 
      fd ed	dg
      fd ed	ddg
      fgZy	)TestOptionalsNargsZeroOrMorer   *rw  r  r  r  r   r   Nrq  r   r|  r  -y a-y a br   rC   r   r   r  r    s    I 	DDV, uH	R$&!"	rB&!"	sev&'	2c
f-.	rDB 	dse$%	2c
+,Ir   r  c            
           e Zd Z	  edd       eddd      gZg dZd ed	d
      fd edgd
      fd eddgd
      fd ed	dg
      fd ed	ddg
      fgZy	)TestOptionalsNargsOneOrMorer   +rw  r  r  r  )r   r   r  r}  za -y br   Nrq  r   r   r|  r  r  r  r   rC   r   r   r  r    s    H 	DDV, 3H	R$&!"	sev&'	2c
f-.	dse$%	2c
+,Ir   r  c            
           e Zd Z	  edd       ede ed            gZg dZd ed	d	
      fd edd	
      fd edd	
      fd ed	d
      fd ed	d
      fd edd
      fgZ	y	)TestOptionalsChoicesr  abcchoicesz-g   r   r  )r   z-f dz-f abz-fadz-gaz-g 6r   N)r  ri  r  r   z-f cr  z-g 0r   z-g 03r{  z-fb -g4r     
r!   r"   r#   rv   r  ranger   r   r}   r   rC   r   r   r  r    s    6 	D% DsE!H-/ =H	R$$ 	cT"#	cT"#	da!	"tq/"	BN#Ir   r  c                   Z    e Zd Z	  eded      gZddgZd ed      fd	 ed
      fgZy)TestOptionalsRequiredr   Tr   requiredr   r   -x 1rv  r   z-x42r  Nr  rC   r   r   r  r    sE    3 	DsT* RyH	a	bIr   r  c                   X    e Zd Z	  edd      gZddgZd ed      fd	 ed
      fgZy)TestOptionalsActionStorer   storer  r   r}  r   Nr   z-xfoor*   r   rC   r   r   r  r    s=    0tG45V}H	R$Z	"u+Ir   r  c                   X    e Zd Z	  edde      gZdgZd ed      fd ee      fgZy)TestOptionalsActionStoreConstr  r  r  r   r   Nr]  )	r!   r"   r#   rv   r   r   r   r}   r   rC   r   r   r  r    s=    6tMHIuH	R$Z	rF|Ir   r  c                   X    e Zd Z	  edd      gZg dZd ed      fd ed      fgZy	)
TestOptionalsActionStoreFalser  store_falser  )r   r
  r  r   T)r	  FNr   rC   r   r   r  r    s9    6tM:;#H	R$Z	rE{Ir   r  c                   X    e Zd Z	  edd      gZg dZd ed      fd ed      fgZy	)
TestOptionalsActionStoreTruez--appler   r  )r   z	--apple=bz	--apple br   F)appleTNr   rC   r   r   r  r    s9    5y>?.H	Re_	BTN#Ir   r  c                       e Zd Z	  edej
                        gZddgZd ed      fd ed      fd	 ed
      fd ed
      fd ed      fgZ	d Z
d Zy)TestBooleanOptionalActionr   r  	--foo bar	--foo=barr   Nr  T--no-fooFz--foo --no-fooz--no-foo --fooc                    t        j                         }| j                  t              5 }|j	                  ddt         j
                         d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nr   Tr  r  z*got an unexpected keyword argument 'const')	r-   r.   r   r   r   BooleanOptionalActionassertInr   	exceptionr   r4   cms      r   
test_constz$TestBooleanOptionalAction.test_const  sc    ((*y)RtH<Z<Z[ * 	BCDUV *)s   #A;;Bc                    t        j                         }| j                  t              5  |j	                  dt         j
                  d        d d d        | j                  t              5  |j	                  dt         j
                  t               d d d        | j                  t              5  |j	                  dt         j
                  d        d d d        | j                  t              5  |j	                  dt         j
                  d       d d d        | j                  t              5  |j	                  dt         j
                  d 	       d d d        | j                  t              5  |j	                  d
t         j
                  d	       d d d        y # 1 sw Y   OxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   |xY w# 1 sw Y   y xY w)N-a)r  r   -b-c)r  metavar-dd-e)r  r  r  rC   )r-   r.   assertWarnsDeprecationWarningr   r  boolr3   s     r   test_deprecated_init_kwz1TestBooleanOptionalAction.test_deprecated_init_kw  s   ((*0155    2 0155    2 0155    2 0155    2 0155    2 0155    21A 21 21 21 21 21 21sG   #F*'F'.#F4.#G .#G.#GF$'F14F= G	GG!)r!   r"   r#   rv   r-   r  r   r   r}   r   r  r  rC   r   r   r  r    ss    %wx/M/MNO[)H	RD\	",	RE]#	2%=)	2$<(IW)r   r  c                   l    e Zd Z	  eddej
                        gZdgZd ed      fd ed      fgZ	y)	!TestBooleanOptionalActionRequiredr   T)r  r  r   r  r  FN)
r!   r"   r#   rv   r-   r  r   r   r}   r   rC   r   r   r  r  6  sI    . 	Gd8+I+IJ tH	",	RE]#Ir   r  c                   r    e Zd Z	  edd      gZg dZd ed      fd ed	g      fd
 ed	dg      fgZy)TestOptionalsActionAppendrf  appendr  r   rf  a --baz	--baz a br   NrF  --baz ar   --baz a --baz br  r   rC   r   r   r  r  B  sL    1wx895H	RD\	BC5M"	BC:./Ir   r  c                   z    e Zd Z	  edddg      gZg dZd edg      fd edd	g      fd
 eg d      fgZy)$TestOptionalsActionAppendWithDefaultrf  r  r7  r  rp  r  r   r  r  r   r  )r7  r   r  Nr   rC   r   r   r  r  N  sQ    1wx#GH5H	RSE]	BC:&'	B?34Ir   r  c                       e Zd Z	  edd       edd       edd       edd      gZg dZd	 ed
d
d
d
      fd ed
gd
d
d
      fd ed
d
gd
d
      fd ed
d
d
d
      fd ed
d
d
d
      fgZy
)!TestConstActionsMissingConstKwargr  append_constr  r   r  r  r0  )z-f vr  r  r   N)r  r*   r  rE  r   rC   r   r   r  r  Z  s    G 	D(GN+D'GM*	 2H	R$DDd34	rTF$78	"t$4T:;	rDdd56	"t489Ir   r  c            	           e Zd Z	  edde       eddd      gZg dZd	 ed
      fd eeg      fd eededg      fgZy
)TestOptionalsActionAppendConstr  r  r  r  r  r  r  r)  r   r  za -cz-bxz-b xr   Nr  -b -cx -b -cyzr   yz	r!   r"   r#   rv   r   r   r   r}   r   rC   r   r   r  r  m  sf    7 	Dy9D, 2H	R$Z	rYK !	2CD ABCIr   r  c            
           e Zd Z	  eddedg       eddd      gZg d	Zd
 edg      fd edeg      fd edededg      fgZy))TestOptionalsActionAppendConstWithDefaultr  r  r7  )r  r  rp  r  r  r  r  r  r   r  r  r   r  Nr  rC   r   r   r  r  |  sq    7 	Dy3%HD, 2H	R3%[	rS)$%&	2ii FGHIr   r  c                   X    e Zd Z	  edd      gZg dZd ed      fd ed      fgZy)	TestOptionalsActionCountr   countr  )r   r   z-x bz	-x a -x br   Nr   rv  r   rC   r   r   r  r    s8    0tG451H	R$Z	rAwIr   r  c                       e Zd Z	  ed       ed       edd      gZddgZd ed	d	d
      fd edd	d
      fd edd	d
      fd ed	dd
      fd ed	dd
      fd edd	d      fgZy	)"TestOptionalsAllowLongAbbreviationr   --foobaz--foobler   r  z--foob 5--foobr   NF)r*   foobazfooblez--foo 77z--foo=7z	--fooba ar   z	--fooba=az--foobl --foo gri  Tr   rC   r   r   r  r    s    < 	GJJ|,
 H%H	RDe45	B3tE:;	B3tE:;	bT#e<=	bT#e<=	B3tDABIr   r  c                       e Zd Z	  ed      Z ed       edd       ed      gZg dZd	 ed
dd
      fd eddd
      fd eddd      fgZy
)%TestOptionalsDisallowLongAbbreviationFallow_abbrevr   --foodler   r  --foonly)-foon 3z--foon 3--foodz--food --foo 2r   Nr*   foodlefoonlyz--foo 33z--foonly 7 --foodle --foo 2r  Tr  rV  rC   r   r   r  r    sr    ;.GJ|,J
 CH	RDt45	B3uT:;	&s4(LMIr   r  c                       e Zd Z	  edd      Z ed       edd       ed      gZg d	Zd
 eddd      fd eddd      fd eddd      fgZy)0TestOptionalsDisallowLongAbbreviationPrefixCharsr  FrK  r  z++fooz++foodler   r  z++foonly)z+foon 3z++foon 3z++foodz++food ++foo 2r   Nr  z++foo 3r  z++foonly 7 ++foodle ++foo 2r  Tr  rV  rC   r   r   r  r    st    L%@GJ|,J
 CH	RDt45	B3uT:;	&s4(LMIr   r  c                       e Zd Z	  ed      Z ed       edd       ed      gZg dZd	 ed
dd
      fd eddd
      fd eddd      fgZy
)/TestOptionalsDisallowSingleDashLongAbbreviationFr  r  z-foodler   r  z-foonly)r  z-foodz-food -foo 2r   Nr  z-foo 3r  z-foonly 7 -foodle -foo 2r  Tr  rV  rC   r   r   r  r    sq    ;.FIl+I
 4H	RDt45	2#eD9:	#RCS%IJIr   r  c            
           e Zd Z	  ed      Z ed       edd      gZddgZd ed	d	
      fd edd	
      fd edd	
      fd ed	d
      fd edd
      fd edd
      fgZy	)/TestDisallowLongAbbreviationAllowsShortGroupingFr  z-rr  r  r  z-c -rr   Nrr  z-rar   z-rccccz-ccr  z-cc -raz-ccrccrV  rC   r   r   r  r    s    ;.D	D! gH	R$$ 	SD!"	dd#$	TQ 	BN#	2?#Ir   r  c            
           e Zd Z	  edd      Z ed       edd      gZddgZd	 ed
d
      fd edd
      fd edd
      fd ed
d      fd edd      fd edd      fgZy
)5TestDisallowLongAbbreviationAllowsShortGroupingPrefixr  Fr  z+rz+cr  r  z+c +rr   Nr  z+rar   z+rccr  z+ccr  z+cc +raz+ccrccrV  rC   r   r   r  r    s    O%@D	D! gH	R$$ 	SD!"	dd#$	TQ 	BN#	2?#Ir   r  c                   4    e Zd Z G d de      Zd Zd Zd Zy)TestStrEnumChoicesc                       e Zd ZdZdZdZy)TestStrEnumChoices.ColorredgreenblueN)r!   r"   r#   REDGREENBLUErC   r   r   Colorr    s    r   r  c                     t        j                         }|j                  d| j                         |j	                  ddg      }| j                  |j                  | j                  j                         y )N--colorr  r  )r-   r.   r   r  r=   r   colorr  r   r4   rx   s      r   test_parse_enum_valuez(TestStrEnumChoices.test_parse_enum_value  sX    ((*Itzz:  )U!34TZZ^^4r   c                     t        j                         }|j                  d| j                  d       | j	                  d|j                                | j	                  d|j                                y )Nr  zChoose a colorr  helpz[--color {red,green,blue}]z  --color {red,green,blue})r-   r.   r   r  r  format_usageformat_helpr3   s     r   'test_help_message_contains_enum_choicesz:TestStrEnumChoices.test_help_message_contains_enum_choices  sZ    ((*Itzz@PQ2F4G4G4IJ2F4F4F4HIr   c                     t        j                  d      }|j                  d| j                         | j	                  t         j
                  d|j                  ddg       y )NFexit_on_errorr  r  z9invalid choice: 'yellow' \(choose from red, green, blue\)yellow)r-   r.   r   r  assertRaisesRegexArgumentErrorr=   r3   s     r   $test_invalid_enum_value_raises_errorz7TestStrEnumChoices.test_invalid_enum_value_raises_error  sT    ((u=Itzz:""H!		
r   N)r!   r"   r#   r   r  r  r  r%  rC   r   r   r
  r
    s     
5J
r   r
  c                   @    e Zd Z	  ed      gZg dZd ed      fgZy)TestPositionalsNargsNoner*   r   r   a br   r  Nr   rC   r   r   r'  r'  "  s)    6u:, H	bSkIr   r'  c                   F    e Zd Z	  edd      gZg dZd edg      fgZy)TestPositionalsNargs1r*   rv  rw  r(  r   r  Nr   rC   r   r   r+  r+  ,  s/    8uA./ H	bcUmIr   r+  c                   H    e Zd Z	  edd      gZg dZd eddg      fgZy	)
TestPositionalsNargs2r*   r  rw  )r   r   r   a b cr)  r   r  r  Nr   rC   r   r   r-  r-  6  s2    8uA./'H	Sz"#Ir   r-  c                   p    e Zd Z	  edd      gZdgZd eg       fd edg      fd edd	g      fgZy
)TestPositionalsNargsZeroOrMorer*   r  rw  r   r   r  r   r)  r  Nr   rC   r   r   r0  r0  @  sN    :uC01vH	RBZ	bcUm	Sz"#Ir   r0  c                   r    e Zd Z	  eddd      gZdgZd ed      fd edg      fd	 edd
g      fgZy)%TestPositionalsNargsZeroOrMoreDefaultr*   r  rE  r  r   r   r  r   r)  r  Nr   rC   r   r   r2  r2  L  sP    HuC?@vH	RE]	bcUm	Sz"#Ir   r2  c                   ^    e Zd Z	  edd      gZddgZd edg      fd edd	g      fgZy
)TestPositionalsNargsOneOrMorer*   r  rw  r   r   r   r  r)  r  Nr   rC   r   r   r4  r4  X  sD    <uC01DzH	bcUm	Sz"#Ir   r4  c                   X    e Zd Z	  edd      gZddgZd ed      fd	 ed	      fgZy)
TestPositionalsNargsOptionalr*   r  rw  r   r)  r   Nr  r   r   rC   r   r   r6  r6  c  s=    &uC01e}H	RD\	bSkIr   r6  c                   Z    e Zd Z	  eddd      gZddgZd ed      fd	 ed	      fgZy
)#TestPositionalsNargsOptionalDefaultr*   r  r  r  r   r)  r   r  r   Nr   rC   r   r   r8  r8  n  s?    ;uC<=e}H	RBZ	bSkIr   r8  c                   \    e Zd Z	  edded      gZg dZd ed      fd	 ed
      fgZy),TestPositionalsNargsOptionalConvertedDefaultr*   r  r  rx  r   rp  )r   r)  1 2r   r  r  1rv  Nr  rC   r   r   r:  r:  y  sE    
 	E35 $H	RBZ	bQiIr   r:  c                   P    e Zd Z	  ed       ed      gZg dZd edd      fgZy)	TestPositionalsNargsNoneNoner*   rE  )r   r   r   r.  r)  r   r  r*   rE  Nr   rC   r   r   r?  r?    s3    7u:s5z2'H	s$%Ir   r?  c                   V    e Zd Z	  ed       edd      gZg dZd eddg	      fgZy
)TestPositionalsNargsNone1r*   rE  rv  rw  )r   r   r   r.  r)  r   r  r@  Nr   rC   r   r   rB  rB    s8    @u:s5':;*H	s&'Ir   rB  c                   X    e Zd Z	  edd       ed      gZg dZd eddgd	
      fgZy)TestPositionalsNargs2Noner*   r  rw  rE  r   r   r   r)  a b c dr.  r   r  r  r@  Nr   rC   r   r   rD  rD    s:    BuA.E
;3H	"#s-.Ir   rD  c                   l   e Zd Z	  ed       ed       edd      gZg dZd eddg 	      fd
 edddg	      fd eddddg	      fd eddg 	      fd eddg 	      fd edddg	      fd edddg	      fd edddg	      fd eddddg	      fd eddddg	      fd eddddg	      fgZy)"TestPositionalsNargsNoneZeroOrMorer   r*   rE  r  rw  )r   r   
a b -x X cr   Nr   r*   rE  r)  r  r.  r  -x X ar7  a -x X-x X a ba -x X ba b -x X
-x X a b c
a -x X b c
a b c -x Xr   rC   r   r   rH  rH    s    Ht9c%j#e32GH*H	b4Sb)*	Ts./	"t3*56	2"-.	2"-.	R#3SE23	R#3SE23	R#3SE23	rCSsCj9:	rCSsCj9:	rCSsCj9:Ir   rH  c                   $   e Zd Z	  ed       ed       edd      gZg dZd edd	d
g      fd edd	d
dg      fd edd	d
g      fd edd	d
g      fd edd	d
g      fd edd	d
dg      fd edd	d
dg      fd edd	d
dg      fgZy)!TestPositionalsNargsNoneOneOrMorer   r*   rE  r  rw  r   r   r   rI  r)  Nr   r  rJ  r.  r  rM  r7  rN  rO  rP  rQ  rR  r   rC   r   r   rT  rT    s    Jt9c%j#e32GH/H	Ts./	"t3*56	R#3SE23	R#3SE23	R#3SE23	rCSsCj9:	rCSsCj9:	rCSsCj9:	Ir   rT  c                       e Zd Z	  ed       ed       edd      gZg dZd eddd	      fd
 eddd	      fd eddd	      fd eddd	      fd eddd	      fd eddd	      fd eddd	      fgZy) TestPositionalsNargsNoneOptionalr   r*   rE  r  rw  r   r   r.  r   NrJ  r)  r  rK  r7  rL  rM  rN  rO  r   rC   r   r   rW  rW    s    Jt9c%j#e32GH%H	b4Sd+,	Ts,-	2$/0	2$/0	R#3C01	R#3C01	R#3C01Ir   rW  c                   6   e Zd Z	  ed       edd       ed      gZg dZd edg d	      fd
 eddgd	      fd edddgd	      fd edg d	      fd edg d	      fd eddgd	      fd eddgd	      fd edddgd	      fd edddgd	      fg	Zy)"TestPositionalsNargsZeroOrMoreNoner   r*   r  rw  rE  )r   r   rN  rQ  rI  r   NrJ  r)  r  r.  r  rK  r7  rL  rM  rO  rP  rR  r   rC   r   r   rZ  rZ    s    Jt9c%s&;SZHDH	b4RS)*	Tu#./	"t#s56	2-.	2-.	R#C5c23	R#C5c23	rCc3ZS9:	rCc3ZS9:
Ir   rZ  c                      e Zd Z	  ed       edd       ed      gZg dZd edd	gd
      fd edd	d
gd      fd edd	gd
      fd edd	gd
      fd edd	gd
      fd edd	d
gd      fd edd	d
gd      fgZy)!TestPositionalsNargsOneOrMoreNoner   r*   r  rw  rE  )r   r   r   rQ  rI  r)  Nr   r  rJ  r.  r  rM  r7  rN  rO  rP  rR  r   rC   r   r   r\  r\    s    Lt9c%s&;SZH=H	Tu#./	"t#s56	R#C5c23	R#C5c23	R#C5c23	rCc3ZS9:	rCc3ZS9:Ir   r\  c                   l    e Zd Z	  eddd       ed      gZg dZd edd      fd	 edd
      fgZy) TestPositionalsNargsOptionalNoner*   r  r  r  rE  rX  r   r@  r)  r  Nr   rC   r   r   r^  r^    sG    LuC<c%jI%H	bRS!"	s$%Ir   r^  c                   x    e Zd Z	  edd       edd      gZg dZd edd	gg 
      fd edd	gdg
      fgZy)TestPositionalsNargs2ZeroOrMorer*   r  rw  rE  r  r   r   r   r)  r   r  r@  r.  r  Nr   rC   r   r   r`  r`    sR    GuA.E0EF!H	Szr*+	"#s#/0Ir   r`  c                   ^    e Zd Z	  edd       edd      gZg dZd edd	gd
g      fgZy)TestPositionalsNargs2OneOrMorer*   r  rw  rE  r  )r   r   r   r)  r.  r   r  r  r@  Nr   rC   r   r   rc  rc    s?    IuA.E0EF(H	"#s#/0Ir   rc  c                   v    e Zd Z	  edd       edd      gZg dZd edd	gd
      fd edd	gd      fgZy
)TestPositionalsNargs2Optionalr*   r  rw  rE  r  )r   r   r   rF  r)  r   r  Nr@  r.  r  r   rC   r   r   re  re    sP    AuA.E0EF,H	Szt,-	"#s-.Ir   re  c                       e Zd Z	  edd       edd      gZddgZd eg dg	      fd
 edgdg	      fd eddgdg	      fgZy)TestPositionalsNargsZeroOrMore1r*   r  rw  rE  rv  r   r   r   r@  r)  r  r.  r  Nr   rC   r   r   rg  rg  (  sg    GuC0#e12EFGH	bRcU#$	u3%()	"#s#/0Ir   rg  c                   x    e Zd Z	  edd       edd      gZg dZd edgd	g
      fd edd	gdg
      fgZy)TestPositionalsNargsOneOrMore1r*   r  rw  rE  rv  ra  r)  r   r  r@  r.  r  Nr   rC   r   r   ri  ri  4  sR    IuC0#e12EF!H	u3%()	"#s#/0Ir   ri  c                   r    e Zd Z	  edd       edd      gZg dZd eddg	      fd
 eddg	      fgZy)TestPositionalsNargsOptional1r*   r  rw  rE  rv  rX  r   Nr@  r)  r  r   rC   r   r   rk  rk  ?  sL    IuC0#e12EF%H	bTu%&	s&'Ir   rk  c                   F   e Zd Z	  ed       ed       edd       edd      gZg dZd	 ed
dg dg      fd ed
ddgdg      fd eddg dg      fd eddg dg      fd eddg dg      fd edddgdg      fd edddgdg      fd edddgdg      fgZy
)#TestPositionalsNargsNoneZeroOrMore1r   r*   rE  r  rw  rF  rv  rU  r)  Nr   r  r   r*   rE  rF  r.  r  rM  r7  rN  rO  rP  rQ  rR  r   rC   r   r   rm  rm  J  s    G 	D	E
EE	 0H	Ts67	"t3%cU;<	R#3BSE:;	R#3BSE:;	R#3BSE:;	rCSse#?@	rCSse#?@	rCSse#?@	Ir   rm  c                   t   e Zd Z	  ed       ed       edd       edd      gZg dZd	 ed
ddgdg      fd ed
dddgdg      fd edddgdg      fd edddgdg      fd edddgdg      fd edddgdg      fd eddddgdg      fd eddddgdg      fd eddddgdg      fg	Zy
)"TestPositionalsNargsNoneOneOrMore1r   r*   rE  r  rw  rF  rv  )r   r   r   r  za b -x X c dza b c -x X dr.  Nr   r  r  rn  rF  r  rP  r7  rQ  rI  rR  z-x X a b c dza -x X b c dza b c d -x Xr   rC   r   r   rp  rp  `  s   I 	D	E
EE	 GH	"t3%cU;<	B3S#JSEBC	rCSse#?@	rCSse#?@	rCSse#?@	rCSse#?@	csc
FG	csc
FG	csc
FG
Ir   rp  c                   @   e Zd Z	  ed       ed       eddd       edd	      gZg d
Zd eddddg      fd eddddg      fd eddddg      fd eddddg      fd eddddg      fd eddddg      fd eddddg      fd eddddg      fgZy)!TestPositionalsNargsNoneOptional1r   r*   rE  r        ?r  rF  rv  rw  rU  r)  Nr   r  rn  r.  r  rM  r7  rN  rO  rP  rQ  rR  r   rC   r   r   rr  rr  w  s    E 	D	E
Ee,E	 0H	TsC59:	"t#C59:	R#3Eu=>	R#3Eu=>	R#3Eu=>	rCScu=>	rCScu=>	rCScu=>	Ir   rr  c                       e Zd Z	  edd       eddd      gZddgZd	 ed
d      fd edd      fd edd      fgZy
)$TestPositionalsNargsOptionalOptionalr*   r  rw  rE  r  r  r   r.  r   Nr@  r   r)  r  r   rC   r   r   ru  ru    se    ! 	EEb) !H	RDb!"	bSb!"	s$%Ir   ru  c            	           e Zd Z	  edd       edd      gZdgZd edg 	      fd
 ed
g 	      fd ed
dg	      fd ed
ddg	      fgZy)&TestPositionalsNargsOptionalZeroOrMorer*   r  rw  rE  r  r   r   Nr@  r   r)  r  r.  r  r   rC   r   r   rw  rw    sn    ;uC0#e32GHyH	RDb!"	bSb!"	s&'	"3*-.	Ir   rw  c                       e Zd Z	  edd       edd      gZddgZd ed	dg
      fd eddg
      fd edddg
      fgZy	)%TestPositionalsNargsOptionalOneOrMorer*   r  rw  rE  r  r   r   r   Nr@  r)  r  r.  r  r   rC   r   r   ry  ry    sc    =uC0#e32GHG}H	bTu%&	s&'	"3*-.Ir   ry  c                   d    e Zd Z	  ed ed            gZg dZd ed      fd ed      fgZy)	TestPositionalsChoicesStringr  abcdefgr  r   r   rj  r  efr   r  ri  N)	r!   r"   r#   rv   setr   r   r}   r   rC   r   r   r{  r{    s=    0vs9~>?-H	bcl	bclIr   r{  c                   f    e Zd Z	  ede ed            gZg dZd ed      fd ed	      fgZ	y
)TestPositionalsChoicesIntr     r  r}  4r  r  15   Nr  rC   r   r   r  r    s?    'vCrCD-H	baj	rr{Ir   r  c                   `    e Zd Z	  edd       eddd      gZg dZd edd	d
gg      fgZy)TestPositionalsActionAppendr  r  r  r  r  rx  rE  r.  r   r  r  r  Nr   rC   r   r   r  r    sI    " 	F8$F81- 4H	"3c
+,-Ir   r  c                       e Zd Z	  edd       eddd      gZdd	gZd
 edd      fd edd      fd edd      fd edd      fgZy)"TestOptionalsNumericAndPositionalsr   r  rw  z-4r]  r   r)  r  r*  z-315r   NFrq  r   Tz-4 ar   rC   r   r   r  r    ss    E 	CsDs<0 f~H	R$% !	b3% !	rDD!"	cT"#	Ir   r  c            	           e Zd Z	  edd       eddd      gZdgZd	 ed
d      fd edd      fd edd      fd ed
d      fd edd      fgZy
)(TestOptionalsAlmostNumericAndPositionalsr   r  rw  z-k4r]  r   r  z-k3r   NFrq  r*  r   Tz-k4 ar   rC   r   r   r  r    s    L 	CsEL1 wH	R$% !	rDE"#	b3% !	TT"#	"sd#$Ir   r  c                      e Zd Z edd       eddd      gZdgZdg edd	
      fdg edd	
      fdg edd	
      fddg ed	d
      fddg ed	d
      fddg ed	d
      fdg ed	d
      fdg ed	d
      fgZy	)$TestEmptyAndSpaceContainingArgumentsr   r  rw  r  z--yyyr]  r(  r   Nrq  za badgerz	-a badgerz--yyy=a badgerz--yyy=-a badgerr   rC   r   r   r  r    s     	CsD'$ vH
rB$ 
rJ$/0
[D12
R$"%&

	R$*56
	b4;78
	R$*56
	b4;78	Ir   r  c                       e Zd Z ed      Z edddd       edd	ed
       eddd      gZddgZd edd
d      fd edd
d      fd edd
d      fd eddd      fd edd
d      fd edd
d      fgZ	y) TestPrefixCharacterOnlyArgumentsz-+rK  -r   r  r5  )r)  rx  r  r  r]  r  )r)  r   rp  z-+-r	  r   r  r  z+ -r   NFr\  z- Xr7  z+ -3Tz- ===z===)
r!   r"   r#   rv   r   r  r   r   r}   r   rC   r   r   r  r    s    -CcH5CcR0EL1
 e}H	R$"&'	b8rU+,	SB%()	dbE*+	TR4()	"ue,-Ir   r  c                       e Zd Z	  edd       edd      gZg Zd edg       fd eg g       fd ed	gg       fd
 ed	gdg      fd	 edd	g      fd eg d	g      fd edgd	g      fgZy)TestNargsZeroOrMorer   r  rw  r]  r   Nrq  r   r   z	-x a -- br  r}  r~  r   rC   r   r   r  r  "  s    It3/S1DEH	R$"	rB"~	ser"#	bC5SE*+	b4C5!"	bSE"#	2#'(Ir   r  c                      e Zd Z	  ed       edd       ed      gZg dZd edg d	      fd
 edg d	      fd edddgd	      fd edg dd	      fd edg dd	      fd edg dd	      fd edddgd	      fgZy)TestNargsRemainderr   r]  ...rw  r  )r   r  z-z Zr7  Nr\  z-z Z XZz
-z Z X A BArC  z
X -z Z A B)r  r  r  rC  z
X A -z Z B)r  r  r  rC  
X A B -z Z)r  rC  r  r  z	X Y --fooYr   r   rC   r   r   r  r  2  s    <s8SE%:CIF!H	b3"%&	2rS)*	rCC:56	rC#8DAB	rC#8DAB	rC#8DAB	b33.D9:Ir   r  c                   j   e Zd Z	  ede       eded       edd      gZg d	Zd
 eddg       fd eddg       fd edddg      fd eddg       fd eddg       fd eddg       fd edddg      fd edddg      fd edddg      fd edddg      fd edddg      fgZy)TestOptionLiker   r   z-3r]  )r   r)  r	  r  rw  )r   z-y2.5r   z-x -az-x -3z-x -3.5z-3 -3.5z-x -2.5z	-x -2.5 az-3 -.5za x -1z-x -1 az-3 -1 ar   Nr\  z-x 2.5      @z-x 2.5 ar   z-3.5      ?z-3-.5g      z-3 .5za -3.5za -x 1g      ?z-x 1 az-3 1 a)	r!   r"   r#   rv   floatr   r   r}   r   rC   r   r   r  r  B  s   8 	DuDu3'Cs
0H
 
R$$"%&	2tr*+	R##/0	dcR()	"ttr*+	"tsb)*	2u-.	b44C5)*	2tu-.	2tu-.	2u-.Ir   r  c                      e Zd Z	  eddeej                         eddeej                         eddej                         ed	deej                         ed
deej                        gZg dZd e	       fd e	d      fd e	ddg      fd e	d      fd e	dd      fd e	ddgd      fd	 e	d      fd e	d      fd
 e	g       fd e	ddg      fg
Z
y)TestDefaultSuppressr*   r  r;  rE  r  rf  r   r  z--qux--quux)r   r   z1 ar   r=  rv  r  r<  r  r@  Tr  z1 --bazr*   rF  z	--baz 1 2r*   rE  rF  N)quxz--qux 1)quuxz
--quux 1 2)r!   r"   r#   rv   r  r-   SUPPRESSr   r   r}   r   rC   r   r   r  r  ]  s   / 	E30A0ABE30A0ABGL(2C2CDG3S(2C2CDHCc83D3DE "H	RT
	bQi	qqc"#	",	B1$'(	bQQCT23	",	B1I	22;	r1v'Ir   r  c                       e Zd Z	  eej
                        Z edd       edd       edd	      gZd
gZd e	       fd e	d      fd e	ddg      fd e	d      fd e	dd      fd e	ddgd      fgZ
y)TestParserDefaultSuppressargument_defaultr*   r  rw  rE  r  rf  r   r  r   r   r   r  r)  r  r@  Tr  r  r  r  r  N)r!   r"   r#   rv   r-   r  r   r   r   r}   r   rC   r   r   r  r  v  s    >H,=,=>EEGL)
 vH	RT
	bSk	s&'	",	B3D)*	bSse67Ir   r  c                      e Zd Z	  ed      Z eddd       edd	       ed
d	       edd      gZdgZd edddd      fd edddd      fd eddgdd      fd edddd      fd edddd      fd eddgdd      fgZy)TestParserDefault42r  r  	--versionversion1.0r  r  r*   r  rw  rE  r  rf  r   r  r   r   )r*   rE  rF  r  r   r)  r  Tr  r  NrV  rC   r   r   r  r    s    8B/K	59EEGL)	 vH	RBBB34	bSbb"56	s2r:;	"r:;	B3BD"=>	bSserBCIr   r  c                   
    e Zd Z	  fdZ ed      Z ed       ed       edd      gZg d	Zd
ej                  z   Z
d edddg      fd eddddg      fd ede
dg      fd edde
g      fd ede
ddg      fd edde
dg      fg d edddg      fgZej                  rPej                  j                  d      Z ej"                  e      Zed ededg      fd eddeg      fgz  Z xZS dZ xZS )TestArgumentsFromFilec                    t         t        |           dt        j                  | j
                        dz   fddd| j                  dz   fg}|D ]+  \  }}t        |d      5 }|j                  |       d d d        - y # 1 sw Y   8xY w)Nhello   
)	recursives   -a
A
@hello)invalids   @no-such-path
undecodablewb)	r   r  rM   rU   fsencoder  r  rl   rm   r   
file_textsr]   textrp   r   s        r   rM   zTestArgumentsFromFile.setUp  s    #T02bkk$**-56% ,D,,u45

 %JD$dD!T

4  "! %!!s   A<<B	@fromfile_prefix_charsr  r   r]  r  rw  )r   r  r7  z@invalidz@missingzhello world!zX YNr7  r  )r   r   r]  z
X -a A Y Zr  r  @hello XzX @helloz-a B @recursive Y ZzX @recursive Z -a BrC  )r  r   r7  r  r      @z@undecodable XzX @undecodabler   )r!   r"   r#   rM   rv   r   r   r   r   FS_NONASCIIr  r}   r   TESTFN_UNDECODABLElstripr  rU   fsdecodedecoded_undecodabler$   r%   s   @r   r  r    sR   ,! 5D	CCs
 7HY222E	TSSE*+	rC33*56	R$%C512	R$#%12	SEc3Z @A	SCE3< @A	rB##78I ##2299$?)bkk+6rD,?C5IJrDC4G3HIJ
 	
	
 r   r  c                        e Zd Z	  fdZ G d de      ZeZ ed      Z edd      gZ	g Z
d	 eg d
      fgZ xZS )TestArgumentsFromFileConverterc                     t         t        |           dg}|D ]+  \  }}t        |d      5 }|j	                  |       d d d        - y # 1 sw Y   8xY w)N)r  s   hello world!
r  )r   r  rM   rl   rm   r  s        r   rM   z$TestArgumentsFromFileConverter.setUp  sR    ,d9;(

 %JD$dD!T

4  "! %!!s   AA	c                       e Zd Zd Zy)>TestArgumentsFromFileConverter.FromFileConverterArgumentParserc              #   `   K   |j                         D ]  }|j                         s|  y wrQ   )r   strip)r   arg_lineargs      r   convert_arg_line_to_argszWTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_args  s(     ~~'yy{	 (s   ,.N)r!   r"   r#   r  rC   r   r   FromFileConverterArgumentParserr    s    	r   r  r  r  r]  r  rw  r  )r  zworld!r7  r  )r!   r"   r#   rM   r   r  r   rv   r   r   r   r}   r   r$   r%   s   @r   r  r    sX    ,!*D  3L5Cs H	R234Ir   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestFileTypeReprc                 d    t        j                  d      }| j                  dt        |             y )Nr  zFileType('r')r-   FileTyper   reprr   r   s     r   test_rzTestFileTypeRepr.test_r  s&      %$t*5r   c                 f    t        j                  dd      }| j                  dt        |             y )Nr  rv  zFileType('wb', 1)r  r  s     r   	test_wb_1zTestFileTypeRepr.test_wb_1  s)      q),d4j9r   c                 h    t        j                  dd      }| j                  dt        |             y )Nr  latin_1rj   z!FileType('r', encoding='latin_1')r  r  s     r   test_r_latinzTestFileTypeRepr.test_r_latin  s)      y9<d4jIr   c                 j    t        j                  ddd      }| j                  dt        |             y )Nri   big5ignore)rk   errorsz/FileType('w', encoding='big5', errors='ignore')r  r  s     r   test_w_big5_ignorez#TestFileTypeRepr.test_w_big5_ignore  s.      vhGJd	%r   c                 j    t        j                  ddd      }| j                  dt        |             y )Nr  rv  replacer  z"FileType('r', 1, errors='replace')r  r  s     r   test_r_1_replacez!TestFileTypeRepr.test_r_1_replace  s+      a	:=tDzJr   N)r!   r"   r#   r  r  r  r  r  rC   r   r   r  r    s    6:J%
Kr   r  c                       e Zd Zd Zd Zy)StdStreamComparerc                     t        j                  |      | _        |dk(  rt        | _        y |dk(  rt
        | _        y t               | _        y )Nstdout.bufferstderr.buffer)operator
attrgetterr   r   
backupattrr   r   )r   r   s     r   r   zStdStreamComparer.__init__  s=      **40?"1DO_$1DO$hDOr   c                 p    	 || j                  t              k(  S # t        $ r || j                  k(  cY S w xY wrQ   )r   r   AttributeErrorr  r   s     r   r   zStdStreamComparer.__eq__  s9    	,DLL--- 	,DOO++	,s    55Nr!   r"   r#   r   r   rC   r   r   r  r  
  s    ',r   r  stdinr   r   zstdin.bufferr  r  c                       e Zd Zi Zd Zd Zy)RFilec                     || _         y rQ   rf   r   rf   s     r   r   zRFile.__init__+  	    	r   c                 &   || j                   v r| j                   |   }n/|j                         x}| j                   |<   |j                          t        |t              s|j                  d      }| j                  |j                  cxk(  xr |k(  S c S )Nascii)seenreadcloser   r   r   rf   r   r   r  s      r   r   zRFile.__eq__.  st    DII99U#D&+jjl2D499U#KKM$$;;w'DyyEJJ.$....r   N)r!   r"   r#   r  r   r   rC   r   r   r  r  (  s    D/r   r  c                   H    e Zd Z	  fdZ ed ej                                ed ej                  d            gZg dZd e	d e
d      	      fd
 e	 e
d       e
d      	      fd e	 e
d       e
d      	      fd e	ee	      fd e	d e
d      	      fgZ xZS )TestFileTypeRc                    t         t        |           dD ]R  }t        t        j
                  j                  | j                  |      dd      5 }|j                  |       d d d        T | j                  d       y # 1 sw Y   pxY w)Nr@  ri   r   rj   readonly)
r   r  rM   rl   rU   r]   r^   rT   rm   rt   r   	file_namerp   r   s      r   rM   zTestFileTypeR.setUp<  sp    mT(*'Ibggll4==)<G-04

9%- - ( 	!!*-- -s   A==B	r   r  r  r  )r   r   znon-existent-file.txtr*   Nr   r  
-x foo barrE  
bar -x foo-x - -r
  )r!   r"   r#   rM   rv   r-   r  r   r   r}   r  eq_stdinr   r$   r%   s   @r   r  r  9  s    B. 	D(x((*+F***3/0 3H	Te-.	rE%LuU|<=	rE%LuU|<=	2x01	R$U:%678Ir   r  c                        e Zd Z	  fdZ ed ej                  d      d      gZdgZd e	 e
d      	      fgZ xZS )
TestFileTypeDefaultsc                     t         t        |           t        t        j
                  j                  | j                  d      dd      }|j                  d       |j                          y )Ngoodri   r   rj   )
r   r  rM   rl   rU   r]   r^   rT   rm   r  )r   rp   r   s     r   rM   zTestFileTypeDefaults.setUpS  sG    "D/1BGGLL7wO

6

r   r  r  zno-file.txtr   rp  r   z-c goodr  )r  )r!   r"   r#   rM   rv   r-   r  r   r   r}   r  r   r$   r%   s   @r   r  r  Q  sN    F 	D(x((-}E tHR%-012Ir   r  c            	       (    e Zd Z	  fdZ ed ej                  d             ed ej                  d            gZddgZd e	d e
d      	      fd
 e	 e
d       e
d      	      fd e	 e
d       e
d      	      fd e	ee	      fgZ xZS )TestFileTypeRBc                     t         t        |           dD ]R  }t        t        j
                  j                  | j                  |      dd      5 }|j                  |       d d d        T y # 1 sw Y   _xY w)Nr@  ri   r   rj   )	r   r  rM   rl   rU   r]   r^   rT   rm   r  s      r   rM   zTestFileTypeRB.setUpe  s`    nd)+'Ibggll4==)<G-04

9%- - (- -s   A,,A5	r   rbr  r  r   r*   Nr  r  rE  r  r  )r!   r"   r#   rM   rv   r-   r  r   r   r}   r  	eq_bstdinr   r$   r%   s   @r   r  r  b  s    B& 	D(x((./F***401 bzH	Te-.	rE%LuU|<=	rE%LuU|<=	2		23	Ir   r  c                   &    e Zd Z e       Zd Zd Zy)WFilec                     || _         y rQ   r  r  s     r   r   zWFile.__init__|  r   r   c                 
   || j                   vr]d}d|j                  v r|j                  d      }|j                  |       |j	                          | j                   j                  |       | j                  |j                  k(  S )NzCheck that file is writable.r  r  )r  moder   rm   r  addrf   r  s      r   r   zWFile.__eq__  se    		!1Dejj {{7+KKKKMIIMM% yyEJJ&&r   N)r!   r"   r#   r  r  r   r   rC   r   r   r  r  y  s    5D'r   r  c            
       J    e Zd Z	  fdZ ed ej                  d             ed ej                  d            gZg dZd e	d e
d      	      fd
 e	d e
d
      	      fd e	 e
d       e
d      	      fd e	 e
d       e
d      	      fd e	ee	      fgZ xZS )TestFileTypeWc                 f    t         |           | j                  d       | j                  d       y Nr
  writabler   rM   rt   rq   r   r   s    r   rM   zTestFileTypeW.setUp  (    !!*-!!*-r   r   ri   r  r  )r   r   r
  r*   Nr  r&  r  rE  r  r  r!   r"   r#   rM   rv   r-   r  r   r   r}   r  	eq_stdoutr   r$   r%   s   @r   r#  r#    s    B. 	D(x((-.F***3/0 &H	Te-.	R$U:%678	rE%LuU|<=	rE%LuU|<=	2		23Ir   r#  c                        e Zd Z	  fdZ ed ej                  d             ed ej                  d            gZg dZd e	 e
d       e
d	      
      fd e	ee
      fgZ xZS )TestFileTypeXc                 f    t         |           | j                  d       | j                  d       y r%  r'  r(  s    r   rM   zTestFileTypeX.setUp  r)  r   r   r   r  r  )r   r   r
  r&  r  r*   rE  r  r  r*  r%   s   @r   r-  r-    sy    K. 	D(x((-.F***3/0 2H	rE%LuU|<=	2		23Ir   r-  c            	          e Zd Z	  ed ej
                  d             ed ej
                  d            gZddgZd ed e	d            fd	 e e	d       e	d
            fd e e	d       e	d
            fd ee
e
      fgZy)TestFileTypeWBr   r  r  r  r   r*   Nr  r  rE  r  r  )r!   r"   r#   rv   r-   r  r   r   r}   r  
eq_bstdoutr   rC   r   r   r0  r0    s    I 	D(x((./F***401 bzH	Te-.	rE%LuU|<=	rE%LuU|<=	2
45	Ir   r0  c                       e Zd Z	  ed ej
                  d             ed ej
                  d            gZd e ed       ed            fd	 ee	e	      fgZ
y
)TestFileTypeXBr   xbr  r  r  r*   rE  r  r  N)r!   r"   r#   rv   r-   r  r   r}   r  r1  r   rC   r   r   r3  r3    sn    N 	D(x((./F***401
 
rE%LuU|<=	2
45Ir   r3  c                       e Zd Z	 d Zy)TestFileTypeOpenArgsc           
      2   t         j                  } |d      df |dd      df |dd      df |d	d
      df |dddd      dfg}t        j                  d      5 }|D ]   \  }} |d        |j                  dg|  " 	 d d d        y # 1 sw Y   y xY w)Nr  )r  NNri   rv  )ri   rv  NNr  r  )ri   r8  Nr  r  r  rj   )r  r8  r  Nr   l1strict)ri   r   r9  r:  zbuiltins.openr*   )r-   r  r   r1   assert_called_with)r   FTcasesmr   rx   s         r   test_open_argsz#TestFileTypeOpenArgs.test_open_args  s    X-.QZ-.I&(BCv&(@AQh')AB
 ZZ(A#
dU$$$U2T2 $ )((s   &BBN)r!   r"   r#   r?  rC   r   r   r6  r6    s
    :3r   r6  c                       e Zd Z	 d Zy)!TestFileTypeMissingInitializationc                 .   t        j                         }| j                  t              5 }|j	                  dt         j
                         d d d        | j                  t         j
                  dt        j                               y # 1 sw Y   @xY w)Nr   r  z: is a FileType class object, instance of it must be passed)	r-   r.   r   
ValueErrorr   r  r   r   r  r  s      r   testz&TestFileTypeMissingInitialization.test  sq    ((*z*b8+<+<= + 	  #	
 +*s   "BBNr!   r"   r#   rD  rC   r   r   rA  rA    s    
	
r   rA  c                       e Zd Z	  ede       ede      gZg dZd edd      fd	 ed
d      fd edd      fgZ	y)TestTypeCallablez--eggsr  r  )r   42jz--eggs az	--eggs 2iz--eggs=42 42r  g      E@)eggsr  z--eggs 2j -- -1.5y               @      z1024.675Ng3333@)
r!   r"   r#   rv   complexr  r   r   r}   r   rC   r   r   rG  rG    s^    6 	H7#F 5H	$/0	bbt45	RT12Ir   rG  c                       e Zd Z	  G d de      Z ede       ede      gZg Zd e ed       ed      	      fd
 e ed       ed      	      fgZ	y)TestTypeUserDefinedc                       e Zd Zd Zd Zy)TestTypeUserDefined.MyTypec                     || _         y rQ   valuer   rR  s     r   r   z#TestTypeUserDefined.MyType.__init__  	    DJr   c                 `    t        |       | j                  ft        |      |j                  fk(  S rQ   r   rR  r   s     r   r   z!TestTypeUserDefined.MyType.__eq__  '    J

+UU[[/IIIr   Nr  rC   r   r   MyTyperO  
      		Jr   rX  r   r  r  r~  r  r   r  -xf gr  ri  N)
r!   r"   r#   rE   rX  rv   r   r   r}   r   rC   r   r   rM  rM    sm    2J J 	DvF  H	2s&+67	"vc{56Ir   rM  c                       e Zd Z	  G d d      Z ede       ede      gZg Zd e ed       ed      	      fd
 e ed       ed      	      fgZy)TestTypeClassicClassc                       e Zd Zd Zd Zy)TestTypeClassicClass.Cc                     || _         y rQ   rQ  rS  s     r   r   zTestTypeClassicClass.C.__init__"  rT  r   c                 `    t        |       | j                  ft        |      |j                  fk(  S rQ   rV  r   s     r   r   zTestTypeClassicClass.C.__eq__%  rW  r   Nr  rC   r   r   Cr^     rY  r   ra  r   r  r  r~  r  r   r  rZ  r  ri  N)	r!   r"   r#   ra  rv   r   r   r}   r   rC   r   r   r\  r\    sk    #J J 	DqF H	2#QsV,-	"qvAcF+,Ir   r\  c                       e Zd Z	 d Zy)TestTypeRegistrationc                    d }t        j                         }|j                  dd|       |j                  dd       |j                  dd       | j	                  |j                  dj                               t        d d	             | j	                  |j                  d
j                               t        dd	             y )Nc                     d| z  S )Nzmy_type{%s}rC   strings    r   get_my_typez.TestTypeRegistration.test.<locals>.get_my_type8  s     6))r   r   my_typer   r  r]  r=  z
my_type{1}rq  z-x 1 42zmy_type{42})r-   r.   registerr   r   r=   r   r}   )r   rh  r4   s      r   rD  zTestTypeRegistration.test6  s    	* ((*	;7Dy1Ci0**399;7dl3	5**9??+<=lm<	>r   NrE  rC   r   r   rc  rc  3  s
    4>r   rc  c                       e Zd Z	  G d dej                        Z G d dej                        Z eddeed       ed	ee	d
d      gZ
g Zd edd      fd edd      fd edd      fd edd      fgZy)TestActionUserDefinedc                       e Zd ZddZy)$TestActionUserDefined.OptionalActionNc                     	 t        d      }|dv rd|_        n|dv rd|_        nt        d|z        t	        |d	|       y # t        $ r}t        d|z        d }~ww xY w)
N      ?r  )      ?rs  r  )       @r  	value: %szopt_action failed: %sr  )r}   r5  AssertionErrorr   r   r   r4   	namespacerR  option_stringr   r   s          r   __call__z-TestActionUserDefined.OptionalAction.__call__O  su    G !dmN*)*K&e^)+K&(u)<==
 Ivu- " G)*AA*EFFGs   2A 	AAArQ   r!   r"   r#   rx  rC   r   r   OptionalActionrn  M  s    	.r   rz  c                       e Zd ZddZy)&TestActionUserDefined.PositionalActionNc                     	 t        d      }|dv rd|_        n&|dv rd|_        n|dv rd|_        nt        d	|z        t	        |d|       y # t        $ r}t        d
|z        d }~ww xY w)Nr  r5  )r  r  rp  )rv  rs  )r  rq  rs  zarg_action failed: %sr5  )r}   r  rt  r   r   ru  s          r   rx  z/TestActionUserDefined.PositionalAction.__call__e  s    G !lH$'+K$c\',K$c\',K$(u)<==
 Ix/ " G)*AA*EFFGs   >A 	A*A%%A*rQ   ry  rC   r   r   PositionalActionr|  c  s    	0r   r  z-sr  rp  )r)  r  r   rp  r5  r  r  )r  r   rx  rp  z-s0.125rq  )r  r5  r  r  z
-s 0.625 1rs  rv  z84 -s2rr  r  N)r!   r"   r#   r-   Actionrz  r  rv   r  r  r   r   r}   r   rC   r   r   rl  rl  J  s    4. .,08?? 04 	Dvn	&H-C	, H	BE!,-	rtB'(	ruQ/0	23r*+	Ir   rl  c                   >    e Zd Z	  G d dej                        Zd Zy)TestActionRegistrationc                       e Zd ZddZy)TestActionRegistration.MyActionNc                 8    t        || j                  d|z         y )Nzfoo[%s])r   r)  )r   r4   rv  valuesrw  s        r   rx  z(TestActionRegistration.MyAction.__call__  s    Ityy)f*<=r   rQ   ry  rC   r   r   MyActionr    s    	>r   r  c                 <   t        j                         }|j                  dd| j                         |j	                  dd       | j                  |j                  dg      t        d             | j                  |j                  dg      t        d	             y )
Nr  	my_actionr5  r  r=  zfoo[1]r~  r  zfoo[42])r-   r.   rj  r  r   r   r=   r}   r3   s     r   rD  zTestActionRegistration.test  s{    ((*+t}}=H[9**C512X3FG**D62Bi4HIr   N)r!   r"   r#   r-   r  r  rD  rC   r   r   r  r    s    ?>8?? >
Jr   r  c                   F    e Zd Z eddde      gZdZd eg d      fgZy	)
TestActionExtendr   extendr  )r  rx  r   rC   z--foo f1 --foo f2 f3 f4)f1f2f3f4r  N)	r!   r"   r#   rv   r   r   r   r}   r   rC   r   r   r  r    s4    GHCc: H	"B+C$DEIr   r  c                        e Zd Z	 d Z	 	 ddZ f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d Zd Zd Zd Zd Zd Zd Zd Zd Z  xZ!S ) TestAddSubparsersc                 8     | j                   t        g|i | y rQ   r   r   rz   s      r   assertArgumentParserErrorz+TestAddSubparsers.assertArgumentParserError      -???r   c                 |   |r,t        dd|      }|j                  |d   dz  dz   dd	       n!t        dd
      }|j                  ddd	       |j                  dt        d       ddi}|rd|d<   d|d<   nd|d<    |j                  d5i |}| j	                  t
        j                  d|j                         t        d      }|rd|d<   |rddg|d<    |j                  d6i |}|j                  dt        d       |j                  d g d!d"#       t        d$      }	|rd%|	d<    |j                  d7i |	}
|
j                  d&g d'd(#       |
j                  d)t        d*d+,       t        d-      }|rd.|d<    |j                  d8i |}|j                  d/t        d0       |j                  d1d2d34       |S )9NPROGmain description)progdescriptionrK  r   r  r*   r   foo helpr  r  r  r  r   rE  bar helpr   r  r  FCOMMANDr  commandstitlecommand helpr  z(cannot have multiple subparser argumentsz1 descriptionr  z1 help1alias11alias2aliasesr[  w helpr   r  x helpr  z2 descriptionz2 helpr  r=  r  r  y helpr	  r  z help)r   rx  r  z3 descriptionz3 helptzt helpur  zu helprx  r  rC   r=  )r  )r  )r   r   r  add_subparsersr#  r-   r$  dict
add_parserr  rK  )r   subparser_helprK  r  r4   subparsers_kwargs
subparsersparser1_kwargsparser1parser2_kwargsparser2parser3_kwargsparser3s                r   r   zTestAddSubparsers._get_parser  s    /);,XFQ!#e+Lz   S 0);=F:   ?J 	 	0 (/+4i()3g&(6f%*V**?->?
x55I%44	6
 /:%-N6")2I(>N9%'*''>~>T(;S/I /:%-N6"'*''>~>T?JSwcI /:%-N6"'*''>~>Ss:SH= r   c                 z    t         |           | j                         | _        | j                  d      | _        y )NT)r  )r   rM   r   r4   command_help_parserr(  s    r   rM   zTestAddSubparsers.setUp  s2    &&(#'#3#34#3#H r   c                 ~    dD ]8  }|j                         }| j                  | j                  j                  |       : y )N)r   r   za az0.5 az0.5 1z0.5 1 -yz0.5 2 -w)r   r  r4   r=   )r   r   rx   s      r   test_parse_args_failuresz*TestAddSubparsers.test_parse_args_failures  s4    1H>>#D**4;;+A+A4H1r   c           
      <   | j                  | j                  j                  dj                               t	        dddd             | j                  | j                  j                  dj                               t	        dd	d
ddg             | j                  | j                  j                  dj                               t	        ddd d             | j                  | j                  j                  dj                               t	        dddg d             y )N0.5 1 b -w 7Fr     r  r*   rE  ri   r   z0.25 --foo 2 -y 2 3j -- -1jTrp  r  y              @y             )r*   rE  r]  r	  z--foo 0.125 1 crq  r  z-1.5 3 11 -- a --foo 7 -- brJ     )r   r   r  --r  )r*   rE  r  r  )r   r4   r=   r   r}   r   s    r   test_parse_argsz!TestAddSubparsers.test_parse_args  s    KK"">#7#7#9:5cQ#.	
 	KK""#@#F#F#HI4TSRI6	
 	KK""#4#:#:#<=4Udc2	
 	KK""#@#F#F#HI5db,JK	
r   c           	         | j                  | j                  j                  dj                               t	        dddd      g f       | j                  | j                  j                  dj                               t	        dddd      dgf       | j                  | j                  j                  d	j                               t	        dddd      dgf       | j                  | j                  j                  d
j                               t	        dddd      ddgf       | j                  | j                  j                  dj                               t	        dddd      g df       y )Nr  Fr  r  r  r  z0.5 -p 1 b -w 7-p0.5 1 b -w 7 -pz0.5 1 b -q -rs -w 7z-qz-rsz0.5 -W 1 b -X Y -w 7 Z)z-Wz-Xr  r  )r   r4   parse_known_argsr   r}   r   s    r   test_parse_known_argsz'TestAddSubparsers.test_parse_known_args	  sC   KK(()=)=)?@Esa3/4	
 	KK(():)@)@)BCEsa3/$8	
 	KK(():)@)@)BCEsa3/$8	
 	KK(()>)D)D)FGEsa3/$?	
 	KK(()A)G)G)IJEsa3/1GH	
r   c                 t    G d d      }| j                  | j                  j                  dj                         |      |dgf       | j	                  |j
                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d	       y )
Nc                       e Zd Zy)ETestAddSubparsers.test_parse_known_args_to_class_namespace.<locals>.CNr!   r"   r#   rC   r   r   ra  r  	      r   ra  r  )rv  r  Fr  r  r  )	r   r4   r  r   assertIsr*   rE  ri   r   )r   ra  s     r   (test_parse_known_args_to_class_namespacez:TestAddSubparsers.test_parse_known_args_to_class_namespace	  s    	 	KK(():)@)@)Ba(PK	
 	aeeU#$a c"r   c           	      :   t               }|j                  d       |j                  d       |j                         }|j                  d      }|j                  d       |j                  d       | j	                  |j                  g d      t        dd d d              | j	                  |j                  g d	      t        d dd d              | j                  |j
                  g d
       | j	                  |j                  g d      t        d d dd              | j	                  |j                  g d      t        d d d d             | j	                  |j                  g d      t        d d d d             | j                  |j
                  g d       y )Nr  r  rE  --foz--foonew)r  rF  rE  rF  )r  r  fofoonew)--foonrF  rE  )r  rF  rE  )rE  r  rF  )rE  r   rF  )rE  r  rF  )rE  r  rF  )r   r   r  r  r   r=   r}   r  r   r4   r  r  s       r   test_abbreviationz#TestAddSubparsers.test_abbreviation*	  se   +-J'J'**,
''.V$Z(**+CD5$tL	N**+CD4$tL	N&&v'8'8:PQ**+AB4tL	N**+BC4eL	N**+CD4eL	N&&v'8'8:RSr   c                    t               }|j                  dddd       |j                  dddd       | j                  |j                  ddg      t	        d	d
      dgf       | j                  |j                  ddg      t	        d	d
      dgf       | j                  |j                  dg      t	        d	d
      dgf       | j                  |j                  dg       | j                  |j                  dg      t	        dd
      dgf       | j                  |j                  dg      t	        dd
      dgf       | j                  |j                  dg      t	        d	d
      dgf       | j                  |j                  dg       | j                  |j                  dg      t	        d	d
      dgf       | j                  |j                  dg      t	        d	d	
      dgf       | j                  |j                  dg       | j                  |j                  dg       | j                  |j                  dg       | j                  |j                  dg      t	        d	d	
      dgf       y )Nz-kz--knownr  r   r  rb  z--newz-urv  )knownnewz-kuz-k=uz-ukz-u=kz	-kunknownz-unknownz
-k=unknownz
-ku=nknownz	-u=nknownz-knewz-ewz-kn=ewz-k-newz-kn-ewz-kne-wz-e-w)r   r   r   r  r}   r  r3   s     r   -test_parse_known_args_with_single_dash_optionz?TestAddSubparsers.test_parse_known_args_with_single_dash_option@	  sR   +-D)GQGD''1E00$>1!,tf5	700$>1!,tf5	700%91!,tf5	7&&v'>'>I00%91!,ug6	800&:1!,vh7	900+?1!,zl;	=&&v'>'>O00,@1!,{m<	>00';1!,ug6	8&&v'>'>
K&&v'>'>
K&&v'>'>
K00(<1!,vh7	9r   c                    t               }|j                  dd       |j                  d      }|j                  d      }|j                  d       | j	                  t        ddd	
      |j                  dj                                      y )Nr   r   r  rE  r(  r=  rF  Fr  r  r<  )r   r   r  r  r   r}   r=   r   r  s       r   	test_destzTestAddSubparsers.test_dest\	  s{    +-GL9***6
'',U#3C8**5;;=9	;r   c                     |j                  dg      }| j                  |j                  d       | j                  |j                   d       y )NrunrC   )r=   r   commandr  )r   r4   rets      r   _test_required_subparsersz+TestAddSubparsers._test_required_subparserse	  s@    (e, 	&&v'8'8"=r   c                     t               }|j                  d      }d|_        |j                  d       | j	                  |       y )Nr  r(  Tr  )r   r  r  r  r  r   r4   r  s      r   &test_required_subparsers_via_attributez8TestAddSubparsers.test_required_subparsers_via_attributem	  sA    +-**	*:
"
e$&&v.r   c                     t               }|j                  dd      }|j                  d       | j                  |       y )Nr  Tr)  r  r  )r   r  r  r  r  s      r   "test_required_subparsers_via_kwargz4TestAddSubparsers.test_required_subparsers_via_kwargt	  s;    +-**	D*I
e$&&v.r   c                     t               }|j                  d      }|j                  d       |j                  d      }| j	                  |j
                         y )Nr  r(  r  rC   r   r  r  r=   assertIsNoner  r   r4   r  r  s       r    test_required_subparsers_defaultz2TestAddSubparsers.test_required_subparsers_defaultz	  sM    +-**	*:
e$##++&r   c                 B   t               }|j                  d      }|j                  d       |j                  d       | j                  t              5 }|j                  d       d d d        | j                  j                  j                  d       y # 1 sw Y   0xY w)NTr  r*   rE  rC   z8error: the following arguments are required: {foo,bar}
$	r   r  r  r   r   r=   r@   r  r   r   r4   r  excinfos       r   -test_required_subparsers_no_destination_errorz?TestAddSubparsers.test_required_subparsers_no_destination_error	  s    +-**D*9
e$e$23wb! 4$$G	
 43   BBc                 B   t               }|j                  d      }|j                  d       |j                  d       | j                  t              5 }|j                  d       d d d        | j                  j                  j                  d       y # 1 sw Y   0xY w)NTr  r*   rE  r  zLerror: argument {foo,bar}: invalid choice: 'baz' \(choose from foo, bar\)\n$r  r  s       r   3test_wrong_argument_subparsers_no_destination_errorzETestAddSubparsers.test_wrong_argument_subparsers_no_destination_error	  s    +-**D*9
e$e$23wh' 4$$[	
 43r  c                     t               }|j                  dd      }|j                  d       |j                  d      }| j	                  |j
                         y )Nr  Fr  r  rC   r  r  s       r   test_optional_subparsersz*TestAddSubparsers.test_optional_subparsers	  sO    +-**	E*J
e$##++&r   c                     | j                  | j                  j                         d       | j                  | j                  j                         t	        j
                  d             y )N)usage: PROG [-h] [--foo] bar {1,2,3} ...
a?              usage: PROG [-h] [--foo] bar {1,2,3} ...

            main description

            positional arguments:
              bar         bar help
              {1,2,3}     command help

            options:
              -h, --help  show this help message and exit
              --foo       foo help
            )r   r4   r  r  textwrapdedentr   s    r   	test_helpzTestAddSubparsers.test_help	  sQ    113E	G002HOO E 5 	r   c                     | j                  d      }| j                  |j                         d       | j                  |j                         t	        j
                  d             y )Nz+:-r  z)usage: PROG [-h] [++foo] bar {1,2,3} ...
a?              usage: PROG [-h] [++foo] bar {1,2,3} ...

            main description

            positional arguments:
              bar         bar help
              {1,2,3}     command help

            options:
              -h, --help  show this help message and exit
              ++foo       foo help
            r   r   r  r  r  r   r3   s     r   test_help_extra_prefix_charsz.TestAddSubparsers.test_help_extra_prefix_chars	  s\    !!u!5,,.E	G++-x @ 0 	r   c                     t        dd      }|j                  ddd       | j                  |j                         t	        j
                  d             y )	Nr  r  r  z--non-breakingr  uR   help message containing non-breaking spaces shall not wrap at non-breaking spacesr  u7              usage: PROG [-h] [--non-breaking]

            main description

            options:
              -h, --help      show this help message and exit
              --non-breaking  help message containing non-breaking spaces shall not
                              wrap at non-breaking spaces
        r   r   r   r  r  r   r3   s     r   test_help_non_breaking_spacesz/TestAddSubparsers.test_help_non_breaking_spaces	  s[    +%79]; 	 	< 	++-x 	@ 	0 		r   c                 R   t        dd      }|j                  dd       | j                  |j                         t	        j
                  d             t        dd      }|j                  dg d	       | j                  |j                         t	        j
                  d
             y )Nr  r  r  r*   z    r  z            usage: PROG [-h] foo

            main description

            positional arguments:
              foo         

            options:
              -h, --help  show this help message and exit
        z%(choices)sr  z            usage: PROG [-h] {}

            main description

            positional arguments:
              {}          

            options:
              -h, --help  show this help message and exit
        r  r3   s     r   test_help_blankz!TestAddSubparsers.test_help_blank	  s    +%79 	 	 	++-x 	@ 	0 		 ,%792 	 	  	++-x 	@ 	0 		r   c                     | j                  d      }| j                  |j                         d       | j                  |j                         t	        j
                  d             y )NrI  r  z)usage: PROG [+h] [++foo] bar {1,2,3} ...
a?              usage: PROG [+h] [++foo] bar {1,2,3} ...

            main description

            positional arguments:
              bar         bar help
              {1,2,3}     command help

            options:
              +h, ++help  show this help message and exit
              ++foo       foo help
            r  r3   s     r    test_help_alternate_prefix_charsz2TestAddSubparsers.test_help_alternate_prefix_chars	  s\    !!u!5,,.E	G++-x @ 0 	r   c                     | j                  | j                  j                         d       | j                  | j                  j                         t	        j
                  d             y )Nr  a              usage: PROG [-h] [--foo] bar {1,2,3} ...

            main description

            positional arguments:
              bar         bar help
              {1,2,3}     command help
                1         1 help
                2         2 help
                3         3 help

            options:
              -h, --help  show this help message and exit
              --foo       foo help
            )r   r  r  r  r  r   r   s    r   test_parser_command_helpz*TestAddSubparsers.test_parser_command_help
  sU    11>>@E	G11==?! * 	r   c                 ~   t        dd      }|j                  ddd       |j                  dd	
       |j                  ddd      }|j                  d      }|j                  d      }| j	                  |j                         d       | j	                  |j                         t        j                  d             y )Nr  r  r  r   r   r  r  rE  r  r	  subcommandsr  zadditional text)r  r  r  r=  r  z'usage: PROG [-h] [--foo] bar {1,2} ...
av              usage: PROG [-h] [--foo] bar {1,2} ...

            main description

            positional arguments:
              bar         bar help

            options:
              -h, --help  show this help message and exit
              --foo       foo help

            subcommands:
              command help

              {1,2}       additional text
            )	r   r   r  r  r   r  r  r  r   )r   r4   r  r  r  s        r   test_subparser_title_helpz+TestAddSubparsers.test_subparser_title_help!
  s    +8JLGLzJE
3**7E0A + C
 '','',,,.C	E++-x @ 0 	r   c                     | j                  t              5 }| j                  j                  |j	                                d d d        | j                  |j                  j                         y # 1 sw Y   0xY wrQ   )r   r   r4   r=   r   r   r  r   )r   r   expected_helpr  s       r   _test_subparser_helpz&TestAddSubparsers._test_subparser_help?
  sT    23rKK""8>>#34 4(;(;< 43s   *A//A8c                 N    | j                  dt        j                  d             y )Nz5.0 1 -ha              usage: PROG bar 1 [-h] [-w W] {a,b,c}

            1 description

            positional arguments:
              {a,b,c}     x help

            options:
              -h, --help  show this help message and exit
              -w W        w help
            r  r  r   r   s    r   test_subparser1_helpz&TestAddSubparsers.test_subparser1_helpD
  "    !!*hoo ? / 	r   c                 N    | j                  dt        j                  d             y )Nz5.0 2 -ha              usage: PROG bar 2 [-h] [-y {1,2,3}] [z ...]

            2 description

            positional arguments:
              z           z help

            options:
              -h, --help  show this help message and exit
              -y {1,2,3}  y help
            r  r   s    r   test_subparser2_helpz&TestAddSubparsers.test_subparser2_helpR
  r  r   c           	          | j                  d      }| j                  |j                  dj                               t	        ddd d      g f       | j                  |j                  dj                               t	        ddd d      g f       y )	NTr  z0.5 1alias1 bFr  r  r  z0.5 1alias2 b)r   r   r  r   r}   r3   s     r   test_alias_invocationz'TestAddSubparsers.test_alias_invocation`
  s    !!$!/##O$9$9$;<Esdc2B7	
 	##O$9$9$;<Esdc2B7	
r   c                 |    | j                  d      }| j                  |j                  dj                                y )NTr  z0.5 1alias3 b)r   r  r=   r   r3   s     r   test_error_alias_invocationz-TestAddSubparsers.test_error_alias_invocationk
  s8    !!$!/&&v'8'8'6'<'<'>	@r   c                     | j                  dd      }d | _        | j                  |j                         t	        j
                  d             y )NT)r  r  a	              usage: PROG [-h] [--foo] bar COMMAND ...

            main description

            positional arguments:
              bar                   bar help

            options:
              -h, --help            show this help message and exit
              --foo                 foo help

            commands:
              COMMAND
                1 (1alias1, 1alias2)
                                    1 help
                2                   2 help
                3                   3 help
            )r   maxDiffr   r  r  r   r3   s     r   test_alias_helpz!TestAddSubparsers.test_alias_helpp
  sH    !!$t!D++-x @ 0 	r   )FNF)"r!   r"   r#   r  r   rM   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  r  r"  r$   r%   s   @r   r  r    s    (@ >B!7rI
I
&
,
#T,98;>//'



'"&$ D$*<=
	
@
r   r  c                        e Zd Z	 d Zd Zd Zy)TestPositionalsGroupsc                    t               }|j                  d       |j                  d      }|j                  d       |j                  d       t        ddd      }|j	                  d	j                               }| j                  ||       y )
Nr*   ri  rE  rF  r=  r  r  r  1 2 3)r   r   r   r}   r=   r   r   r   r4   r   expectedr   s        r   test_nongroup_firstz)TestPositionalsGroups.test_nongroup_first
  sx    +-E"))#.5!E"#3C0""7==?36*r   c                    t               }|j                  d      }|j                  d       |j                  d       |j                  d       t        ddd      }|j	                  d	j                               }| j                  ||       y )
Nxxxr*   rE  rF  r=  r  r  r  r&  r   r   r   r}   r=   r   r   r'  s        r   test_group_firstz&TestPositionalsGroups.test_group_first
  sx    +-))%05!E"E"#3C0""7==?36*r   c                 d   t               }|j                  d      }|j                  d       |j                  d       |j                  d       |j                  d      }|j                  d       t        ddd	d
      }|j	                  dj                               }| j                  ||       y )Nr+  r*   rE  rF  r  frellr=  r  r  r  )r*   rE  rF  r/  z1 2 3 4r,  r'  s        r   test_interleaved_groupsz-TestPositionalsGroups.test_interleaved_groups
  s    +-))%0E"5!E"))%07##3Cs;""9??#456*r   N)r!   r"   r#   r)  r-  r0  rC   r   r   r$  r$  
  s    J++
+r   r$  c                   z     e Zd Z	 d Z f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 xZS )TestParentParsersc                 8     | j                   t        g|i | y rQ   r  rz   s      r   r  z+TestParentParsers.assertArgumentParserError
  r  r   c                    t         |           t        d      | _        | j                  j	                  d       | j                  j                  d      }|j	                  d       | j                  j	                  d       t        d      | _        | j                  j	                  d       | j                  j	                  d       | j                  j                  d	      }|j	                  d
       t        d      | _        | j                  j	                  d       t        d      | _        | j                  j	                  d       t        d      | _	        | j                  j                         }|j	                  dd       |j	                  dd       t        j                  j                  t        j                  d         | _        y )NFrL  z--wr   r  r	  r   r  r  z--dr  r   r  r   )r   rM   r   wxyz_parentr   r   abcd_parentw_parentz_parentab_mutex_parentadd_mutually_exclusive_grouprU   r]   basenamer   r   main_program)r   x_groupc_groupr   r   s       r   rM   zTestParentParsers.setUp
  sb   5uE%%e,""55c:T"%%c*5uE%%c*%%d+""55c:U#2EB""5)2EB""3'  :5I$$AAC4545GG,,SXXa[9r   c                     t        | j                  g      }| j                  |j                  dj	                               t        ddd             y )Nparentsz-y 1 2 --w 3r  r=  r  ri   r]  r	  )r   r6  r   r=   r   r}   r3   s     r   test_single_parentz$TestParentParsers.test_single_parent
  sE    +T5E5E4FG**>+?+?+ABcSC0	2r   c                     | j                  | j                  j                         t        | j                  g      }| j                  |j                         y NrA  )_test_mutex_abr:  r=   r   r3   s     r   test_single_parent_mutexz*TestParentParsers.test_single_parent_mutex
  sC    D00;;<+T5I5I4JKF--.r   c                     | j                   g}t        d|      }t        |g      }| j                  |j                         y )NF)rL  rB  rA  )r:  r   rG  r=   r   rB  r4   s      r   test_single_granparent_mutexz.TestParentParsers.test_single_granparent_mutex
  s<    ''(+UGL+VH=F--.r   c                    | j                   |g       t        dd             | j                   |dg      t        dd             | j                   |dg      t        dd             | j                  |ddg       | j                  |ddg       | j                  |dg       | j                  |ddg       | j                  |ddg       y )NFr   r  r  Tr  r  )r   r}   r  )r   r=   s     r   rG  z TestParentParsers._test_mutex_ab
  s    Beu)=>TF+R$%-@ATF+R%4-@A&&zD$<@&&zD$<@&&zD6:&&zD$<@&&zD$<@r   c                     | j                   | j                  g}t        |      }| j                  |j	                  dj                               t        dd ddd d             y )NrA  z--d 1 --w 2 3 4r  r=  r  r  )r   r  r  ri   r]  r	  )r7  r6  r   r   r=   r   r}   rJ  s      r   test_multiple_parentsz'TestParentParsers.test_multiple_parents
  sZ    ##T%5%56+G<**+<+B+B+DEcTSC43G	Ir   c           
      n   | j                   | j                  g}t        |      }| j                  |j	                  dj                               t        dddd d             | j                  |j                  dj                                | j                  |j                  d	j                                y )
NrA  z
-a --w 2 3TFr  r  )r   r  ri   r]  r	  z-a --w 2 3 -bz-a -b --w 2 3)r:  r6  r   r   r=   r   r}   r  rJ  s      r   test_multiple_parents_mutexz-TestParentParsers.test_multiple_parents_mutex
  s    '')9)9:+G<**<+=+=+?@desdcB	D&&446	8&&446	8r   c                     | j                  t        j                  t        j                  | j                  | j
                  g       y rF  )r   r-   r$  r.   r8  r6  r   s    r   test_conflicting_parentsz*TestParentParsers.test_conflicting_parents
  s9    ""##]]D$4$45 	 	7r   c                     | j                  t        j                  t        j                  | j                  | j
                  g       y rF  )r   r-   r$  r.   r7  r:  r   s    r   test_conflicting_parents_mutexz0TestParentParsers.test_conflicting_parents_mutex  s;    ""##%%t';';< 	 	>r   c                     | j                   | j                  g}t        |      }| j                  |j	                  dj                               t        d d d             y )NrA  r<  r  rC  )r6  r9  r   r   r=   r   r}   rJ  s      r   test_same_argument_name_parentsz1TestParentParsers.test_same_argument_name_parents
  sM    ##T]]3+G<**5;;=9ddc2	4r   c           	         t               }|j                         }|j                  d| j                  g      }|j	                  d       | j                  |j                  dj                               t        dddd	             y )
NrE  rA  r   zbar -b 1 --d 2 3 4r  r=  r  r  )r   r  r  r   )	r   r  r  r7  r   r   r=   r   r}   )r   r4   r  abcde_parsers       r   test_subparser_parentsz(TestParentParsers.test_subparser_parents  sw    +-**,
!,,UT=M=M<N,O!!#&**+?+E+E+GHcSC37	9r   c                    t               }|j                         }| j                  g}|j                  d|      }|j	                  d      }|j                  d       | j                  | j                  g}|j                  d|      }|j                  d       | j                  |j                  dj                               t        dd	d
             | j                  |j                  dj                               t        d	ddd dd
             | j                  |j                  dj                                | j                  |j                  dj                                y )Nr*   rA  r?  r  rE  r   zfoo -a 4TFr  r  zbar -b  --w 2 3 4r  r  )r   r  ri   r]  r	  r   zfoo -a -b 4zbar -b -a 4)r   r  r:  r  r   r   r6  r   r=   r   r}   r  )r   r4   r  rB  
abc_parserr?  wxyzabe_parsers          r   test_subparser_parents_mutexz.TestParentParsers.test_subparser_parents_mutex  s>   +-**,
''(**5'*B
//	:S!##T%9%9:#..ug.F##C(**:+;+;+=>des3	5**+>+D+D+FGetsdcSI	K&&}224	6&&}224	6r   c           	          | j                   | j                  g}t        |      }|j                         }| j                  }| j                  |t        j                  dj                  ||rdnd                   y )NrA  aG              usage: {}{}[-h] [-b B] [--d D] [--w W] [-y Y] a z

            positional arguments:
              a
              z

            options:
              -h, --help  show this help message and exit
              -b B
              --w W

            c:
              --d D

            x:
              -y Y
         r   )	r7  r6  r   r  r=  r   r  r   format)r   rB  r4   parser_helpprognames        r   test_parent_helpz"TestParentParsers.test_parent_help+  sm    ##T%5%56+G<((*$$hoo 7" F8HS"6#'8 	9r   c           	         t        d      }|j                  dd      }|j                  d       |j                  d       |j                         }|j                  d       |j                  d	       t        |g
      }| j	                  t
        |j                  g d       |j                         }| j                  }| j                  |t        j                  dj                  ||rdnd                   y )NFr5  ri  gdr  r  r[  r   r  r  rA  r  r  r  r  z            usage: {}{}[-h] [-w W] [-x X] [-y Y | -z Z]

            options:
              -h, --help  show this help message and exit
              -y Y
              -z Z

            g:
              gd

              -w W
              -x X
        r`  r   )r   r   r   r;  r   r   r=   r  r=  r   r  r   ra  )r   parentri  r>  r4   rb  rc  s          r   test_groups_parentsz%TestParentParsers.test_groups_parentsC  s    +U;%%CT%B	t	t//1	t	t+VH=-v/@/@"	$ ((*$$hoo 7 F8HS"6'8 	9r   c                    t        d      }|j                  dd      }|j                  d       |j                  d       |j                         }|j                  d       |j                  d	       t        d
|g      }| j	                  t
        |j                  g d       |j                         }| j                  |t        j                  d             y )NFr5  ri  rf  rg  r[  r   r  r  r  )r  rB  rh  z            usage: PROG [-h] [-w W] [-x X] [-y Y | -z Z]

            options:
              -h, --help  show this help message and exit

            g:
              gd

              -w W
              -x X
              -y Y
              -z Z
        )r   r   r   r;  r   r   r=   r  r   r  r   )r   ri  ri  r>  r4   rb  s         r   test_mutex_groups_parentsz+TestParentParsers.test_mutex_groups_parentsa  s    +U;%%CT%B	t	t**,	t	t+&J-v/@/@"	$ ((*hoo 7 ' 	r   )r!   r"   r#   r  rM   rD  rH  rK  rG  rO  rQ  rS  rU  rW  rZ  r^  rd  rj  rl  r$   r%   s   @r   r2  r2  
  sY    ?@:82
/
/AI87>496&909<r   r2  c                   *    e Zd Zd Zd Zd Zd Zd Zy) TestMutuallyExclusiveGroupErrorsc                 b    t               }| j                  } |t        |j                  d       y )Nr*   )r  )r   r   r   r;  )r   r4   raisess      r   test_invalid_add_argument_groupz@TestMutuallyExclusiveGroupErrors.test_invalid_add_argument_group  s'    +-""y&==UKr   c                     t               }|j                         }|j                  }| j                  } |t        |dd        |t        |d        |t        |dd        |t        |dd        |t        |dt
        j                         y )Nr   Tr  rE  r  rw  rv  )r   r;  r   r   rC  r-   PARSER)r   r4   r   r   rp  s        r   test_invalid_add_argumentz:TestMutuallyExclusiveGroupErrors.test_invalid_add_argument  sv    +-335))""z<4@z</z<c:z<a8z<hooFr   c                 ^   t        d      }|j                         }|j                  dd       |j                  dd       |j                         }|j                  dd       |j                  d	d       d
}| j                  |j	                         t        j                  |             y )Nr  r  r   r   r  r0  r  z--soupz--nutsz            usage: PROG [-h] [--foo | --bar] [--soup | --nuts]

            options:
              -h, --help  show this help message and exit
              --foo
              --bar
              --soup
              --nuts
              )r   r;  r   r   r  r  r   )r   r4   group1group2r(  s        r   r  z*TestMutuallyExclusiveGroupErrors.test_help  s    +8446GL9GM:446H\:H];	 	++-xx/HIr   c           	         d | _         t        d      }|j                  dd      }|j                  d      }|j	                         }|j                  ddt        j                  	       |j                  d
dt        j                  	       d}d}|j                  |       d| d| d| d| d	}| j                  |j                         t        j                  |             y )Nr  rv  r  r  )r  r)  r*   ra  r   r  z--quietz--longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglongڀLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGz>            usage: PROG foo [-h]
                            [r`  zj]

            options:
              -h, --help            show this help message and exit
              z
              )r!  r   r  r  r;  r   r-   r  r   r  r  r   )r   r4   r  cmd_foor   longoptlongmetar(  s           r   Ctest_help_subparser_all_mutually_exclusive_group_members_suppressedzdTestMutuallyExclusiveGroupErrors.test_help_subparser_all_mutually_exclusive_group_members_suppressed  s    +8((z	(J%%e,446;|(BSBST9\@Q@QR"W%%Yaz 2 iq
 # 	,,.0IJr   c                     t        j                         }|j                         }| j                  t              5  |j                  dg       d d d        y # 1 sw Y   y xY w)Nr7   )r-   r.   r;  r   rC  r=   r   r4   r   s      r   test_empty_groupz1TestMutuallyExclusiveGroupErrors.test_empty_group  sH    ((*335z*tf% +**s   AAN)r!   r"   r#   rq  rt  r  r~  r  rC   r   r   rn  rn    s    L
	GJ(K*&r   rn  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
MEMixinc                     | j                  d      j                  }t        }| j                  D ]>  }| j	                  |      5  | j                  |||j                                d d d        @ y # 1 sw Y   KxY wNFr  r   
get_parserr=   r   r   r>   r   r   r   r=   r   args_strings       r   test_failures_when_not_requiredz'MEMixin.test_failures_when_not_required  sc    __e_4??
#==K;/!!%[5F5F5HI 0/ )//s   "A11A:	c                    | j                  d      j                  }t        }| j                  dgz   D ]>  }| j	                  |      5  | j                  |||j                                d d d        @ y # 1 sw Y   KxY w)NTr  r   r   r  r  s       r   test_failures_when_requiredz#MEMixin.test_failures_when_required  sj    __d_3>>
#==B4/K;/!!%[5F5F5HI 0/ 0//s   "A55A>	c                     | j                  d      j                  }| j                  | j                  z   }|D ]H  \  }}| j	                  |      5   ||j                               }| j                  ||       d d d        J y # 1 sw Y   UxY wr  )r  r=   r   successes_when_not_requiredr>   r   r   )r   r=   r   r  r   	actual_nss         r    test_successes_when_not_requiredz(MEMixin.test_successes_when_not_required  s{    __e_4??
NNT%E%EE	(1$K;/&{'8'8':;	  K8 0/ )2//s   )BB	c                    | j                  d      j                  }| j                  D ]H  \  }}| j                  |      5   ||j	                               }| j                  ||       d d d        J y # 1 sw Y   UxY w)NTr  r   )r  r=   r   r>   r   r   )r   r=   r  r   r  s        r   test_successes_when_requiredz$MEMixin.test_successes_when_required  sk    __d_3>>
(,$K;/&{'8'8':;	  K8 0/ )7//s   )A55A>	c                     | j                  d      j                  }| j                  }| j                   |       t	        j
                  |             y NFr  )r  r  usage_when_not_requiredr   r  r   r   r  expected_usages      r   test_usage_when_not_requiredz$MEMixin.test_usage_when_not_required  s>    6CC55)HIr   c                     | j                  d      j                  }| j                  }| j                   |       t	        j
                  |             y NTr  )r  r  usage_when_requiredr   r  r   r  s      r   test_usage_when_requiredz MEMixin.test_usage_when_required  s>    5BB11)HIr   c                     | j                  d      j                  }| j                  | j                  z   }| j	                   |       t        j                  |             y r  )r  r  r  r  r   r  r   r   r  r  s      r   test_help_when_not_requiredz#MEMixin.test_help_when_not_required  sG    oouo5AA++dii7(=>r   c                     | j                  d      j                  }| j                  | j                  z   }| j	                   |       t        j                  |             y r  )r  r  r  r  r   r  r   r  s      r   test_help_when_requiredzMEMixin.test_help_when_required  sG    ooto4@@''$))3(=>r   N)r!   r"   r#   r  r  r  r  r  r  r  r  rC   r   r   r  r    s.    JJ99J
J
?
?r   r  c                       e Zd ZddZddgZd edd      fd ed	d      fd
 edd      fd edd	      fgZd edd      fgZdZdZ	dZ
y)TestMutuallyExclusiveSimpleNc                     t        d      }|j                  |      }|j                  dd       |j                  ddd	d
       |S )Nr  rv  r  r0  r  r	  rf  r  r  baz help)rx  r  r  r   r;  r   r   r  r4   r   s       r   r  z&TestMutuallyExclusiveSimple.get_parser  sN    +833X3F747#SzJr   --bar X --baz Yz--bar X --baz--bar Xr7  rE  rF  z--bar X --bar Zr  --baz Yr  rf  r   z;        usage: PROG [-h] [--bar BAR | --baz [BAZ]]
        z;        usage: PROG [-h] (--bar BAR | --baz [BAZ])
        z
        options:
          -h, --help   show this help message and exit
          --bar BAR    bar help
          --baz [BAZ]  baz help
        rQ   r!   r"   r#   r  r   r}   r   r  r  r  r  rC   r   r   r  r    s     "?3H	B3D)*	B3D12	B4S)*	"3'(	I 
RDd#$#Dr   r  c            
           e Zd ZddZdgZd edddd      fd edddd      fd	 edddd      fd
 edddd      fgZd edddd      fgZdZdZ	dZ
y)TestMutuallyExclusiveLongNc                     t        d      }|j                  dd       |j                  dd       |j                  |      }|j                  d	d
       |j                  dd       |S )Nr  rv  z--abcdez
abcde helpr	  z--fghijz
fghij helpr  z--klmnoz
klmno helpz--pqrstz
pqrst helpr   r   r;  r  s       r   r  z$TestMutuallyExclusiveLong.get_parser  sp    +8IL9IL933X3F9<89<8r   z--klmno X --pqrst Yz	--klmno Xr7  )abcdefghijklmnopqrstz--abcde Y --klmno Xr  z	--pqrst Xz--pqrst X --fghij Yr   zi    usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
                [--klmno KLMNO | --pqrst PQRST]
    zi    usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
                (--klmno KLMNO | --pqrst PQRST)
    z
    options:
      -h, --help     show this help message and exit
      --abcde ABCDE  abcde help
      --fghij FGHIJ  fghij help
      --klmno KLMNO  klmno help
      --pqrst PQRST  pqrst help
    rQ   r  rC   r   r   r  r    s     &&H	bt4s$GH	SCt<	>	bt4t3GH	TD<	>I 
Rd$d$?@#Dr   r  c                       e Zd Zd ZdgZd edd      fd edd      fd	 ed
d      fgZd ed
d      fgZdZdZ	dZ
y
)$TestMutuallyExclusiveFirstSuppressedc                     t        d      }|j                  |      }|j                  dt        j                         |j                  ddd	       |S )
Nr  rv  r  r   r	  r  r  r  r  r   r;  r   r-   r  r  s       r   r  z/TestMutuallyExclusiveFirstSuppressed.get_parserH  sR    +833X3F4h&7&784HEr   z-x X -yz-x Xr7  Trq  z	-x X -x Yr  r  NFr   z&        usage: PROG [-h] [-y]
        z$        usage: PROG [-h] -y
        zm
        options:
          -h, --help  show this help message and exit
          -y          y help
        r  rC   r   r   r  r  F  st     {H	cT"#	b3$'(	rDE"#I 
R$$ #Dr   r  c            	           e Zd Zd Zg dZd eddd      fd eddd      fd	 eddd
      fd eddd      fgZd eddd      fgZdxZZ	dZ
y)#TestMutuallyExclusiveManySuppressedc                     t        d      }|j                  |      }|j                  } |ddt        j                          |ddt        j                          |d	t        j                  
       |S )Nr  rv  r  --spamr   r  r/  r  z	--bladderr	  r  )r   r  r4   r   r!  s        r   r  z.TestMutuallyExclusiveManySuppressed.get_parseri  sc    +833X3F  H\0A0ABJ}83D3DEKh//0r   )z--spam --badgerz--badger --bladder Bz--bladder B --spamr  TN)r  r5  bladderr/  Fz--bladder BrC  z--spam --spamr   z!        usage: PROG [-h]
        P
        options:
          -h, --help  show this help message and exit
        r!   r"   r#   r  r   r}   r   r  r  r  r  rC   r   r   r  r  g  s    H 
24d;<	RU5$?@	dC@A	"$tTBC	I 
RU467#5 1Dr   r  c            
           e Zd Zd Zg dZd eddg       fd edd	g       fd
 eddd
g      fd eddg d      fgZd eddg       fgZdZdZ	dZ
y)*TestMutuallyExclusiveOptionalAndPositionalc                     t        d      }|j                  |      }|j                  ddd       |j                  dd	
       |j                  ddd       |S )Nr  rv  r  r   r   FOOr  r  SPAMr	  r5  r  BADGERr  r  r  s       r   r  z5TestMutuallyExclusiveOptionalAndPositional.get_parser  sa    +833X3F7<eD8&183X>r   )z--foo --spam Sz
--spam S XzX --foozX Y Z --spam S	--foo X Yr   TNr*   r  r5  z--spam SFSr7  zX Y Z)r7  r  r  r   zD        usage: PROG [-h] [--foo | --spam SPAM | badger ...]
        zD        usage: PROG [-h] (--foo | --spam SPAM | badger ...)
        z
        positional arguments:
          badger       BADGER

        options:
          -h, --help   show this help message and exit
          --foo        FOO
          --spam SPAM  SPAM
        r  rC   r   r   r  r    s    H 
"D45	REB78	bUse45	"T/BC	I 
RER01#	Dr   r  c                   *   e Zd Zd Zg dZd eddddd      fd eddddd      fd eddddd      fd	 eddddd      fd
 eddddd      fd eddddd      fgZd eddddd      fd eddddd      fd eddddd      fgZdxZZ	dZ
y)#TestMutuallyExclusiveOptionalsMixedc                 
   t        d      }|j                  ddd       |j                  |      }|j                  ddd	       |j                  d
dd       |j                  ddd       |j                  ddd       |S )Nr  rv  r   r   r  r  r  r  a helpr  b helpr  r  r  c helpr  r  s       r   r  z.TestMutuallyExclusiveOptionalsMixed.get_parser  s    +8DHE33X3F48D48DDHE48Dr   )z-a -b-b -cz-a -cz-a -b -cr  TFr   r  r  r   r]  r  r  z-a -xz-y -bz-x -y -cr   r   r  z:        usage: PROG [-h] [-x] [-a] [-b] [-y] [-c]
        z
        options:
          -h, --help  show this help message and exit
          -x          x help
          -a          a help
          -b          b help
          -y          y help
          -c          c help
        Nr  rC   r   r   r  r    s     7H	rDEUeu=>	rETUeu=>	rEUdeu=>	"tu?@	"u$?@	R%5DDDABI 
R%5EUe<=	rEUetu=>	rEUeu=>#5 1	Dr   r  c                   r    e Zd ZddZddgZd edd      fd edd	      fgZd
 edd      fgZdZdZ	dZ
y)TestMutuallyExclusiveInGroupNc                     t        d      }|j                  dd      }|j                  |      }|j                  dd	       |j                  d
d	       |S )Nr  rv  zTitled groupzGroup descriptionrg  r  r0  r  r	  rf  r  )r   r   r;  r   )r   r  r4   titled_groupmutex_groups        r   r  z'TestMutuallyExclusiveInGroup.get_parser  sk    +800 .A 1 C 55x5H 	  z :  z :r   r  z--baz X --bar Yr  r7  r  r  r  r   z9        usage: PROG [-h] [--bar BAR | --baz BAZ]
        z9        usage: PROG [-h] (--bar BAR | --baz BAZ)
        z
        options:
          -h, --help  show this help message and exit

        Titled group:
          Group description

          --bar BAR   bar help
          --baz BAZ   baz help
        rQ   r  rC   r   r   r  r    si     "#45H	B3D)*	B4S)*I
 
RDd#$#
Dr   r  c                       e Zd Zd Zg dZd eddddd      fd ed	d
ddd      fd ed	dd
dd      fd eddddd
      fd ed	d
ddd
      fgZd ed	dddd      fd ed	dddd
      fgZdxZZ	dZ
y	)1TestMutuallyExclusiveOptionalsAndPositionalsMixedc                    t        d      }|j                  dd       |j                  ddd	       |j                  |
      }|j                  ddd       |j                  ddd	       |j                  ddd	       |S )Nr  rv  r   r  r	  r  r   r  r  r  r   r  r  r  r  r  r  r  r  r  s       r   r  z<TestMutuallyExclusiveOptionalsAndPositionalsMixed.get_parser  s    +8Ch/DHE33X3F3c948D48Dr   )zX A -br  z-c X AzX Ar  Fr7  r  zX -bNTzX -czX A -yzX -y -bzX -yz6        usage: PROG [-h] [-y] [-b] [-c] x [a]
        a   
        positional arguments:
          x           x help
          a           a help

        options:
          -h, --help  show this help message and exit
          -y          y help
          -b          b help
          -c          c help
        r  rC   r   r   r  r  
  s     -H	SEUcU;<	ddese<=	detse<=	2u=>	B#>?I 
b45ESE:;	deut<=#
5 1Dr   r  c                   .    e Zd Zd ZdZdZdZdZdZdZ	dZ
y)TestMutuallyExclusiveNestedc                 b   t        d      }|j                  |      }|j                  d       |j                  d       t        j                         5  t        j
                  dt               |j                  |      }d d d        j                  d       |j                  d       t        j                         5  t        j
                  dt               |j                  |      }d d d        j                  d	       |j                  d
       |S # 1 sw Y   xY w# 1 sw Y   9xY w)Nr  rv  r  r  r  r  r  r  r  r  )r   r;  r   warningscatch_warningssimplefilterr  )r   r  r4   r   rx  group3s         r   r  z&TestMutuallyExclusiveNested.get_parser:  s    +833X3F4 4 $$&!!(,>?777JF ' 	D!D!$$&!!(,>?88(8KF ' 	D!D! '&
 '&s   -D -D%D"%D.zO        usage: PROG [-h] [-a A | -b B | [-c C | -d D | [-e E | -f F]]]
        zO        usage: PROG [-h] (-a A | -b B | (-c C | -d D | (-e E | -f F)))
        z
        options:
          -h, --help  show this help message and exit
          -a A
          -b B
          -c C
          -d D
          -e E
          -f F
        N)r!   r"   r#   r  r  r  r  r  r  r  r  rC   r   r   r  r  3  s8    "
D '+#"&'+$#' r   r  c                       e Zd ZddZddgZd edd      fd edd      fd	 edd      fgZd
 edd      fgZdZdZ	dZ
y)%TestMutuallyExclusiveOptionalOptionalNc                     t        d      }|j                  |      }|j                  d       |j                  dd       |S )Nr  rv  r  r   r0  r  rw  r  r  s       r   r  z0TestMutuallyExclusiveOptionalOptional.get_parserf  sE    +833X3F7#7#.r   --foo X --bar Yz--foo X --bar--foo Xr7  r@  r  r0  r   z;        usage: PROG [-h] (--foo FOO | --bar [BAR])
        z;        usage: PROG [-h] [--foo FOO | --bar [BAR]]
        z{
        options:
          -h, --help   show this help message and exit
          --foo FOO
          --bar [BAR]
        rQ   r  rC   r   r   r  r  e  s|     	H
 
B3D)*	B4S)*	"4()I 
RDd#$#Dr   r  c                       e Zd ZddZddgZd edd      fd	 edd      fd
 edd      fgZd edd      fgZdZdZ	dZ
y)(TestMutuallyExclusiveOptionalWithDefaultNc                     t        d      }|j                  |      }|j                  d       |j                  dt        d       |S )Nr  rv  r  r   r0  Tr  r   r;  r   r  r  s       r   r  z3TestMutuallyExclusiveOptionalWithDefault.get_parser  sG    +833X3F7#7t<r   r  z--foo X --bar=r  r7  Tr@  r  z--bar=Fr   z9        usage: PROG [-h] (--foo FOO | --bar BAR)
        z9        usage: PROG [-h] [--foo FOO | --bar BAR]
        zx
        options:
          -h, --help  show this help message and exit
          --foo FOO
          --bar BAR
        rQ   r  rC   r   r   r  r    s|     	H
 
B3D)*	B4T*+	2$E*+I 
RDd#$#Dr   r  c                   p    e Zd ZddZdgZd edd      fd edd      fgZd edd      fgZd	Zd
Z	dZ
y)*TestMutuallyExclusivePositionalWithDefaultNc                     t        d      }|j                  |      }|j                  d       |j                  ddt        d       |S )	Nr  rv  r  r   rE  r  Tr;  r  r  s       r   r  z5TestMutuallyExclusivePositionalWithDefault.get_parser  sI    +833X3F7#5$Er   r  r  r7  Tr@  r   z3        usage: PROG [-h] (--foo FOO | bar)
        z3        usage: PROG [-h] [--foo FOO | bar]
        z
        positional arguments:
          bar

        options:
          -h, --help  show this help message and exit
          --foo FOO
        rQ   r  rC   r   r   r  r    sj     	H 
B3D)*	bTt$%I
 
RDd#$#Dr   r  c                         e Zd Zd fd	Z xZS )MEPBasec                 b    t         t        |   |      }t        |j                  d|g      }|S )Nr  F)r  rL  rB  )r   r  r  r   r  )r   r  ri  r4   r   s       r   r  zMEPBase.get_parser  s4    w0(0C+uvh@r   rQ   )r!   r"   r#   r  r$   r%   s   @r   r  r    s     r   r  c                       e Zd Zy)&TestMutuallyExclusiveGroupErrorsParentNr  rC   r   r   r  r        r   r  c                       e Zd Zy)!TestMutuallyExclusiveSimpleParentNr  rC   r   r   r  r    r  r   r  c                       e Zd Zy)TestMutuallyExclusiveLongParentNr  rC   r   r   r  r    r  r   r  c                       e Zd Zy)*TestMutuallyExclusiveFirstSuppressedParentNr  rC   r   r   r  r    r  r   r  c                       e Zd Zy))TestMutuallyExclusiveManySuppressedParentNr  rC   r   r   r  r    r  r   r  c                       e Zd Zy)0TestMutuallyExclusiveOptionalAndPositionalParentNr  rC   r   r   r  r    r  r   r  c                       e Zd Zy))TestMutuallyExclusiveOptionalsMixedParentNr  rC   r   r   r  r    r  r   r  c                       e Zd Zy)7TestMutuallyExclusiveOptionalsAndPositionalsMixedParentNr  rC   r   r   r  r    r  r   r  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestSetDefaultsc           
      
   t               }|j                  d       |j                  dd       | j                  t        ddd      |j	                  g              | j                  t        ddd      |j	                  g t                            | j                  t        ddd      |j	                  g t        d                   | j                  t        ddd      |j	                  g t        dd	                   y )
Nr*   r   rE  rv  )r]  r	  r\  rF  r  )r   r	  r   set_defaultsr   r}   r=   r3   s     r   test_set_defaults_no_argsz)TestSetDefaults.test_set_defaults_no_args  s    +-e$eq)eu2**2.	0eu2**2rt4	6eu2**2rE{;	=eu2**2rEQ/?@	Br   c           	         t               }|j                  dd       |j                  dd       | j                  t	        dd      |j                  g              | j                  t	        dd      |j                  g t	                            | j                  t	        dd      |j                  g t	        d                   | j                  t	        d	d      |j                  d
j                                      | j                  t	        d	d      |j                  d
j                         t	                            | j                  t	        d	d      |j                  d
j                         t	        d                   y )Nr*   rE  rq  r   xfooxro  rF  r   r=  r  )r   r  r   r   r}   r=   r   r3   s     r   test_set_defaults_with_argsz+TestSetDefaults.test_set_defaults_with_args  s6   +-eu-D'2g/**2.	0g/**2rt4	6eu-**2rE{;	=cU+**6<<>:	<cU+**6<<>24@	BcU+**6<<>2;G	Ir   c                    t               }|j                  d       |j                         }|j                  d      }|j                  d       | j	                  t        dd      |j                  dj                                      y )Nr*   r   r   rE  r  rq  )r   r  r  r  r   r}   r=   r   )r   r4   r  parser_as       r   test_set_defaults_subparsersz,TestSetDefaults.test_set_defaults_subparsers%  su    +-e$**,
((-&eu-**399;7	9r   c                     t        d      }|j                  d       t        |g      }| j                  t        d      |j	                  g              y )NFr5  r*   r   rA  r  )r   ri  r4   s      r   test_set_defaults_parentsz)TestSetDefaults.test_set_defaults_parents.  sH    +U;e$+VH=ef&7&7&;<r   c                 
   t        j                         }|j                         j                  d      }|j	                  d       |j	                  d       | j                  t        d      |j                  dg             y )Nr7  rv  r  r  )r-   r.   r  r  r  r   r}   r=   )r   r4   xparsers      r   )test_set_defaults_on_parent_and_subparserz9TestSetDefaults.test_set_defaults_on_parent_and_subparser4  sl    ((*'')44S9"#F$5$5se$<=r   c                    t               }|j                  dddd       |j                  d       |j                  dd	       |j                  d
d       |j                  ddd       | j                  t	        dddd      |j                  g              |j                  dddd       | j                  t	        dddd      |j                  g              y )NWr7  r  r  r  r[  r   XXro  r]  r  rw  r	  ZZr  WWYY)r   r  r   r   r}   r=   r3   s     r   &test_set_defaults_same_as_add_argumentz6TestSetDefaults.test_set_defaults_same_as_add_argument;  s    +-cSC37D!D$/Cs+CsD9 	cTSD9**2.	0 	dcTS9dcTS9**2.	0r   c                    t               }|j                  dddd       |j                  d      }|j                  d       |j                  dd	
       |j                  dd       |j                  ddd       | j	                  t        dd	dd      |j                  g              |j                  dddd       | j	                  t        dddd      |j                  g              y )Nr  r7  r  r  r  r*   r[  r   r  ro  r]  r  rw  r	  r  r  r  r  )r   r  r   r   r   r}   r=   r  s      r   ,test_set_defaults_same_as_add_argument_groupz<TestSetDefaults.test_set_defaults_same_as_add_argument_groupL  s    +-cSC37))%04 4.3c*3c48 	cTSD9**2.	0 	dcTS9dcTS9**2.	0r   N)
r!   r"   r#   r  r  r  r  r  r  r  rC   r   r   r  r    s'    BI"9=>0"0r   r  c                       e Zd Zd Zy)TestGetDefaultc                    t               }| j                  |j                  d             | j                  |j                  d             |j                  d       | j                  |j                  d             | j                  |j                  d             |j                  dt        d       | j                  |j                  d             | j                  d|j                  d             |j                  d       | j                  d|j                  d             | j                  d|j                  d             y )	Nr*   rE  r   r0  r  r  r5  r  )r   r  get_defaultr   r  r   r  r3   s     r   test_get_defaultzTestGetDefault.test_get_defaulte  s   +-&,,U34&,,U34G$&,,U34&,,U34G#r:&,,U34V//67)6#5#5e#<=V//67r   N)r!   r"   r#   r  rC   r   r   r  r  c  s    8r   r  c                       e Zd Zd Zd Zy)TestNamespaceContainsSimplec                 t    t        j                         }| j                  d|       | j                  d|       y )Nr   r   )r-   	NamespaceassertNotInr   nss     r   
test_emptyz&TestNamespaceContainsSimple.test_empty|  s0    !R b!r   c                     t        j                  dd      }| j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       y )	Nrv  r  rq  r   r   r]  xxr	  )r-   r"  r#  r  r$  s     r   test_non_emptyz*TestNamespaceContainsSimple.test_non_empty  s`    !q)R c2c2r"b!r   N)r!   r"   r#   r&  r)  rC   r   r   r   r   z  s    "
"r   r   c                       e Zd Zd Zy)TestHelpFormattingMetaclassc                 V    |dk(  ry  G d dt               }dD ]  \  }} || ||        y )NHelpTestCasec                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)6TestHelpFormattingMetaclass.__init__.<locals>.AddTestsc                     || _         || _        | j                  | j                  | j                  fD ]-  }|j
                  d|}|fd}	 ||_        t        |||       / y # t        $ r Y w xY w)Nr   c                      ||        y rQ   rC   r   s     r   test_wrapperzUTestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__.<locals>.test_wrapper  r   r   )func_suffixstd_nametest_format
test_printtest_print_filer!   r   r   )r   
test_classr3  r4  r   r   r2  s          r   r   z?TestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__  s    #.  ("&"2"2"&//"&"6"6"8I ,5+=+={ KI5> (09- J	<@"8 % s   A##	A/.A/c                 \   t        j                  |j                  j                  i |j                  j                  }t        |dg       D ](  } |j                  |j                  i |j                   * t        |dg       }|D ]X  \  }} |j                  |j                  i |j                  }|D ](  } |j                  |j                  i |j                   * Z t        |dg       }|r=|j                         }	|D ](  }
 |	j                  |
j                  i |
j                   * |S )Nr   argument_group_signaturessubparsers_signatures)
r-   r.   r   rx   ry   r   r   r   r  r  )r   r   r4   argument_sig
group_sigs	group_sigargument_sigsr   subparsers_sigsr  subparser_sigs              r   r   zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests._get_parser  sG   !00,,116--446 %,F4I2$NL'F''):): ?*6*=*=? %O %V-H"M
0:,I}5F55y~~ J8A8H8HJE(5***L,=,= B-9-@-@B )6 1; #*&2I2"N"!'!6!6!8J)8-
--}/A/A G1>1E1EG *9 r   c                     t        || j                        }t        j                  |      }d |_        |j                  ||       y rQ   )r   r3  r  r   r!  r   )r   r   parser_textexpected_texts       r   _testz<TestHelpFormattingMetaclass.__init__.<locals>.AddTests._test  s9     '0@0@ A ( >!%""=+>r   c                     | j                  |      }t        |d| j                  z        }| j                  | |              y )Nz	format_%s)r   r   r3  rE  )r   r   r4   ra  s       r   r5  zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_format  s9    ))&1 t7G7G)GH

668,r   c                    | j                  |      }t        |d| j                  z        }t        t        | j                        }t        t        | j                  t                      	  |        t        t        | j                        j                         }t        t        | j                  |       | j                  ||       y # t        t        | j                  |       w xY wNzprint_%s)	r   r   r3  r   r4  r   r	   r   rE  )r   r   r4   print_
old_streamrC  s         r   r6  zATestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print  s    ))&1 d6F6F)FG$S$--8
T]]KM:<H")#t}}"="F"F"HKC
;

6;/ C
;s   )/C C#c                     | j                  |      }t        |d| j                  z        }t               } ||       |j	                         }| j                  ||       y rH  )r   r   r3  r	   r   rE  )r   r   r4   rI  sfilerC  s         r   r7  zFTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print_file  sQ    ))&1 d6F6F)FG#u#nn.

6;/r   N)	r!   r"   r#   r   r   rE  r5  r6  r7  rC   r   r   r   r/    s!    A",?-

00r   r   ))usager   )r  r   )r   )r   rf   r   r   r   r3  r4  s          r   r   z$TestHelpFormattingMetaclass.__init__  s9    >!F	0v F	0R&:!KS+x0&:r   Nr{   rC   r   r   r+  r+    s    O1r   r+  r-  c                       e Zd Z	  eddd      Z edddd	       ed
dd       edd       edd       edd      gZg ZdZedz   ZdZ	y)TestHelpBiggerOptionalsr  DESCRIPTIONEPILOGr  r  epilogr`  r  r  0.1r  r   r   X HELPr  --yY HELPr	  r*   FOO HELPrE  BAR HELPz;        usage: PROG [-h] [-v] [-x] [--y Y] foo bar
        aW  
        DESCRIPTION

        positional arguments:
          foo            FOO HELP
          bar            BAR HELP

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
          -x             X HELP
          --y Y          Y HELP

        EPILOG
            0.1
        N
r!   r"   r#   rv   r   r   r:  rM  r  r  rC   r   r   rO  rO    s    EM"*, 	D+i?DH5E!E
#E
# !#E   D Gr   rO  c                       e Zd Z	 d Zej
                  Zej                  Zej                  ZdZedz   Z	ej                  Z
y)TestShortColumnsc                 n    | j                  t        j                               }|j                  dd       y )NrH   r  )rI   r   rJ   r  rK   s     r   rM   zTestShortColumns.setUp  s)    	 = = ?@	4 r   z        usage: PROG
               [-h]
               [-v]
               [-x]
               [--y Y]
               foo
               bar
        a  
        DESCRIPTION

        positional arguments:
          foo
            FOO HELP
          bar
            BAR HELP

        options:
          -h, --help
            show this
            help
            message and
            exit
          -v, --version
            show
            program's
            version
            number and
            exit
          -x
            X HELP
          --y Y
            Y HELP

        EPILOG
    N)r!   r"   r#   rM   rO  r   r   r:  rM  r  r  rC   r   r   r]  r]    sW    
! #:"J"J"9"M"M"9"S"SE   D: #:"A"AGr   r]  c                       e Zd Z	  eddd      Z edddd	       ed
dd       edd       edd       edd      gZ edd       edd       eddd      gfgZdZedz   Zd Z	y!)"TestHelpBiggerOptionalGroupsr  rP  rQ  rR  r`  r  r  rT  r  r   r   rU  r  rV  rW  r	  r*   rX  rE  rY  zGROUP TITLEzGROUP DESCRIPTIONr  rF  zBAZ HELPr  r  zZ HELPr  zN        usage: PROG [-h] [-v] [-x] [--y Y] [-z Z [Z ...]] foo bar baz
        a  
        DESCRIPTION

        positional arguments:
          foo            FOO HELP
          bar            BAR HELP

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
          -x             X HELP
          --y Y          Y HELP

        GROUP TITLE:
          GROUP DESCRIPTION

          baz            BAZ HELP
          -z Z [Z ...]   Z HELP

        EPILOG
    rZ  Nr[  rC   r   r   r`  r`  >  s    EM"*, 	D+i?DH5E!E
#E
# 
](;	<J'Ch/?1 	2!
E   D,Gr   r`  c                       e Zd Z	  edd      Z eddd       edd	
       edd
       edd
      gZg ZdZedz   ZdZ	y)TestHelpBiggerPositionalsUSAGErP  rM  r  r   r   rU  r  rV  rW  r	  ekiekiekifekangzEKI HELPrE  rY          usage: USAGE
        a  
        DESCRIPTION

        positional arguments:
          ekiekiekifekang  EKI HELP
          bar              BAR HELP

        options:
          -h, --help       show this help message and exit
          -x               X HELP
          --y Y            Y HELP
        r   Nr[  rC   r   r   rb  rb  m  sl    >mDDH5E!J/E
#	 !#E   D Gr   rb  c                       e Zd Z	  edd      Z eddd       edd	d
      gZ edd       eddd      gfgZdZedz   ZdZ	y)TestHelpReformattingr  ze   oddly    formatted
description

that is so long that it should go onto multiple lines when wrappedr  r   r  zoddly
    formatted -x helpr  r  r]  r  znormal y helpr  z'
    oddly formatted group

descriptionr  r  r   z` oddly 
formatted    -a  help  
    again, so long that it should be wrapped over multiple linesr  2        usage: PROG [-h] [-x XX] [-a] yyy
        a  
        oddly formatted description that is so long that it should go onto multiple
        lines when wrapped

        positional arguments:
          yyy         normal y help

        options:
          -h, --help  show this help message and exit
          -x XX       oddly formatted -x help

        title:
          oddly formatted group description

          -a          oddly formatted -a help again, so long that it should be wrapped
                      over multiple lines
        r   Nr[  rC   r   r   rh  rh    s    H)* 	D$ &= 	>C_5 
W #0 
1 d<$% 
&		'
!E   D( Gr   rh  c                       e Zd Z	  edd      Z eddd       edd	d
      gZ ed       eddd      gfgZdZedz   ZdZ	y)TestHelpWrappingShortNamesr  zZD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
Dr  r   r  zxXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXri  r]  r  dYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHALPHASr  r   zPAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAr  rj  a  
        D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD
        DD DD DD DD D

        positional arguments:
          yyy         YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH
                      YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH

        options:
          -h, --help  show this help message and exit
          -x XX       XHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH
                      HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HX

        ALPHAS:
          -a          AHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH
                      HHAAHHH HHAAHHH HHA
        r   Nr[  rC   r   r   rl  rl    sz    H[AD$]3C\2
 
X\@B 	C!E   D, Gr   rl  c                       e Zd Z	  edd      Z edddd       ed	d
d       eddd      gZ ed       eddd       eddd      gfgZdZedz   ZdZ	y)TestHelpWrappingLongNamesrc  zZD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD Drd  r`  r  r  zZV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV Vr  r   XXXXXXXXXXXXXXXXXXXXXXXXXzdXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHri  r]  yyyyyyyyyyyyyyyyyyyyyyyyyrm  rn  r  AAAAAAAAAAAAAAAAAAAAAAAAAzdAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHr	  zzzzzzzzzzzzzzzzzzzzzzzzzzdZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHrf  ag  
        D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD
        DD DD DD DD D

        positional arguments:
          yyyyyyyyyyyyyyyyyyyyyyyyy
                                YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH
                                YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH

        options:
          -h, --help            show this help message and exit
          -v, --version         show program's version number and exit
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
                                XH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH
                                XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XH

        ALPHAS:
          -a AAAAAAAAAAAAAAAAAAAAAAAAA
                                AH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH
                                AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AH
          zzzzzzzzzzzzzzzzzzzzzzzzz
                                ZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH
                                ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZH
        zs        V VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV
        VV VV VV VV V
        Nr[  rC   r   r   rp  rp    s    FzBD+iDD(6C5 
Xh\:XL9; 	<!
E   D<Gr   rp  c                      e Zd Z	  ed      Z eddd       eddd	       ed
d
       eddd       eddd       eddej                         edddej                         edddej                         edej                  ej                  d      g	Z ed       ed dd!       ed"d#d$       ed%d%d       ed&d&d      gfgZ	d'Z
e
d(z   Zd)Zy*)+TestHelpUsager  rv  r[  r  ri   r  r   r  r   r   r	  r  r  )r  rx  r  r  r   zWhether to foo)r  r  r0  zWhether to barT)r  rp  r  r  z--foobarz--barfoor  z--bazzzBazz!)r  rp  r  r   r  r]  r  r{  r	  r  r   a/          usage: PROG [-h] [-w W [W ...]] [-x [X ...]] [--foo | --no-foo]
                    [--bar | --no-bar]
                    [-f | --foobar | --no-foobar | --barfoo | --no-barfoo]
                    [--bazz | --no-bazz] [-y [Y]] [-z Z Z Z]
                    a b b [c] [d ...] e [e ...]
        az  
        positional arguments:
          a                     a
          b                     b
          c                     c

        options:
          -h, --help            show this help message and exit
          -w W [W ...]          w
          -x [X ...]            x
          --foo, --no-foo       Whether to foo
          --bar, --no-bar       Whether to bar
          -f, --foobar, --no-foobar, --barfoo, --no-barfoo
          --bazz, --no-bazz     Bazz!

        group:
          -y [Y]                y
          -z Z Z Z              z
          d                     d
          e                     e
        r   N)r!   r"   r#   rv   r   r-   r  r  r   r:  rM  r  r  rC   r   r   rv  rv    s   #'D#&D#&CcCc#Cc%G*83Q3QRG*D$::	<D*j1O1OPHX;;&//g	? 
WCc*AC(#S)#S)	
 	!E   D, Gr   rv  c                   Z    e Zd Z ed      Z edd       eddd      gZd	Zed
z   ZdZy)TestHelpUsageWithParenthesesr  rv  
positionalz(example) positionalr  r  z
--optionalz{1 (option A), 2 (option B)}zX        usage: PROG [-h] [-p {1 (option A), 2 (option B)}] (example) positional
        z
        positional arguments:
          (example) positional

        options:
          -h, --help            show this help message and exit
          -p {1 (option A), 2 (option B)}, --optional {1 (option A), 2 (option B)}
        r   N)	r!   r"   r#   rv   r   r   rM  r  r  rC   r   r   rx  rx  W  sL    'L"89D,(FG
E   D Gr   rx  c                       e Zd Z	  edd      Zg Z ed       edd       edd      gf ed	       ed
d
       edd      gfgZdZedz   ZdZ	y)TestHelpOnlyUserGroupsr  Fr  rL  xxxxr   r   r	  r   yyyyr  r  r]  z.        usage: PROG [-x X] [-y Y] a b
        zn
        xxxx:
          -x X  x
          a     a

        yyyy:
          b     b
          -y Y  y
        r   Nr[  rC   r   r   r|  r|  m  s    #7	V3#
 	 
V#3
 		!E  	 	D Gr   r|  c                   z    e Zd Z	  ed      Z edd       edd       ed       ed	      gZg Zd
Zedz   ZdZ	y)TestHelpUsageLongProg<PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPrv  r[  r  rz  r   r7  r   r  zz        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               [-h] [-w W] [-x X] a b
        z
        positional arguments:
          a
          b

        options:
          -h, --help  show this help message and exit
          -w W
          -x X
        r   Nr[  rC   r   r   r  r    sa    4)D#D#CC	 !#E  
 
D Gr   r  c                       e Zd Z	  ed      Z edd       edd       edd	       ed
d       ed       ed      gZg ZdZedz   ZdZ	y) TestHelpUsageLongProgOptionsWrapr  rv  r[  WWWWWWWWWWWWWWWWWWWWWWWWWrz  r   rq  r  YYYYYYYYYYYYYYYYYYYYYYYYYr  ZZZZZZZZZZZZZZZZZZZZZZZZZr   r  a          usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
               [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
               a b
        a-  
        positional arguments:
          a
          b

        options:
          -h, --help            show this help message and exit
          -w WWWWWWWWWWWWWWWWWWWWWWWWW
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        r   Nr[  rC   r   r   r  r    su    K)D(#D(#D(#D(#CC !#E   D Gr   r  c                   f    e Zd Z	  edd      Z ed       ed       ed      gZg ZdZedz   Zd	Z	y
)$TestHelpUsageLongProgPositionalsWrapr  Fr}  aaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccz        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
               ccccccccccccccccccccccccc
        
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        r   Nr[  rC   r   r   r  r    sV    M59HHH
 !#E
   D Gr   r  c            	           e Zd Z	  ed      Z edd       edd       edd	       ed
d       ed       ed       ed      gZg ZdZedz   ZdZ	y)TestHelpUsageOptionalsWrapr  rv  r[  r  rz  r   rq  r  r  r  r  r   r  r  z        usage: PROG [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
                    [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
                    a b c
        a9  
        positional arguments:
          a
          b
          c

        options:
          -h, --help            show this help message and exit
          -w WWWWWWWWWWWWWWWWWWWWWWWWW
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        r   Nr[  rC   r   r   r  r    s|    6'D(#D(#D(#D(#CCC !#E   D Gr   r  c                       e Zd Z	  ed      Z ed       ed       ed       ed       ed       ed      gZg Zd	Zed
z   ZdZ	y)TestHelpUsagePositionalsWrapr  rv  r   r  r  r  r  r  z        usage: PROG [-h] [-x X] [-y Y] [-z Z]
                    aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        a  
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc

        options:
          -h, --help            show this help message and exit
          -x X
          -y Y
          -z Z
        r   Nr[  rC   r   r   r  r    si    8'D	D	D	HHH !#E
   D Gr   r  c                       e Zd Z	  ed      Z edd       edd       edd	       ed
       ed       ed      gZg ZdZedz   ZdZ	y)%TestHelpUsageOptionalsPositionalsWrapr  rv  r   rq  rz  r  r  r  r  r  r  r  a          usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
                    [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
                    aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        aZ  
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc

        options:
          -h, --help            show this help message and exit
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        r   Nr[  rC   r   r   r  r  .  sr    F'D(#D(#D(#HHH !#E   D Gr   r  c                   p    e Zd Z	  ed      Z edd       edd       edd	      gZg Zd
Zedz   ZdZ	y)TestHelpUsageOptionalsOnlyWrapr  rv  r   rq  rz  r  r  r  r  z        usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
                    [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
        z
        options:
          -h, --help            show this help message and exit
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        r   Nr[  rC   r   r   r  r  R  s]    J'D(#D(#D(#
 !#E
   D Gr   r  c                   f    e Zd Z	  edd      Z ed       ed       ed      gZg ZdZedz   Zd	Z	y
) TestHelpUsagePositionalsOnlyWrapr  Fr}  r  r  r  z~        usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        r  r   Nr[  rC   r   r   r  r  l  sV    L7HHH
 !#E   D Gr   r  c            
           e Zd Z	  ed      Z eded       edddd	d
       edg dd       eddddgdd       edd       eddd      gZ ed       edd        ed!d"d#      gfgZd$Zed%z   Z	d&Z
y')(TestHelpVariableExpansionr  rv  r   z"x %(prog)s %(default)s %(type)s %%r  r  r  r  XXXz y %(prog)s %(default)s %(const)s)r  rp  r  r  r   r  z$foo %(prog)s %(default)s %(choices)sr  r0  rF  rv  r  BBBz!bar %(prog)s %(default)s %(dest)s)rp  r  r  r  r  zspam %(prog)s %(default)sr	  r5  r  zbadger %(prog)s %(default)s)rp  r  r   r  za %(prog)s %(default)sr  r8  zb %(prog)s %(default)szw        usage: PROG [-h] [-x X] [-y] [--foo {a,b,c}] [--bar BBB] [-a A] [-b B]
                    spam badger
        a  
        positional arguments:
          spam           spam PROG None
          badger         badger PROG 0.5

        options:
          -h, --help     show this help message and exit
          -x X           x PROG None int %
          -y             y PROG 42 XXX
          --foo {a,b,c}  foo PROG None a, b, c
          --bar BBB      bar PROG baz bar

        group:
          -a A           a PROG None
          -b B           b PROG -1
        r   N)r!   r"   r#   rv   r   r  r   r:  rM  r  r  rC   r   r   r  r    s    D'Ds5	7D%3	5G_7	9GUQFE4	6F45Hc(EF 
W34b'?@
 	!E   D" Gr   r  c                   <    e Zd Z	  edd      Zg Zg ZdZedz   ZdZ	y)&TestHelpVariableExpansionUsageSuppliedr  z%(prog)s FOOr  rM  z         usage: PROG FOO
        r  r   Nr[  rC   r   r   r  r    s=    Jn= "E   D
 Gr   r  c                   6    e Zd Z	  edd      Zg Zg ZdZeZdZ	y)$TestHelpVariableExpansionNoArgumentsr  Fr}  z        usage: PROG
        r   Nr[  rC   r   r   r  r    s1    E7 "E DGr   r  c                   n    e Zd Z	  edej
                        Z edd       edd      gZg ZdZ	d	Z
d	Zy
)TestHelpSuppressUsager  r  r   r  r	  r  	spam helpz        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r   N)r!   r"   r#   rv   r-   r  r   r   r:  r  rM  r  rC   r   r   r  r    sO    =h.?.?@G*%F% !#D EGr   r  c                   t    e Zd Z	  edd      Z edej                         edd      gZg ZdZ	e	d	z   Z
d
Zy)TestHelpSuppressOptionalr  Fr}  r   r	  r  r  z!        usage: PROG spam
        zA
        positional arguments:
          spam  spam help
        r   Nr!   r"   r#   rv   r   r-   r  r   r:  rM  r  r  rC   r   r   r  r    s[    I7G(++,F% !#E   D
 Gr   r  c                       e Zd Z	  ed      Z edd       edd      gZ ed       ed	ej                        gfgZd
Z	e	dz   Z
dZy)TestHelpSuppressOptionalGroupr  rv  r   r  r	  r  r  r   r0  2        usage: PROG [-h] [--foo FOO] spam
        
        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r   N)r!   r"   r#   rv   r   r   r-   r  r:  rM  r  r  rC   r   r   r  r    sq    F'G*%F%
 
WG(*;*;<=>!E   D Gr   r  c                   r    e Zd Z	  ed      Z edd       edej                        gZg ZdZ	e	dz   Z
d	Zy
)TestHelpSuppressPositionalr  rv  r   r  r	  r  z-        usage: PROG [-h] [--foo FOO]
        o
        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r   Nr  rC   r   r   r  r    sY    K'G*%F**+ !#E   D Gr   r  c                   N    e Zd Z	  ed      Z eddd      gZg ZdZedz   Zd	Z	y
)TestHelpRequiredOptionalr  rv  r   Tr  )r  r  z+        usage: PROG [-h] --foo FOO
        r  r   Nr[  rC   r   r   r  r  (  sK    8'Gd4 !#E   D Gr   r  c                   f    e Zd Z	  eddd      Z eddd       ed	d
d      gZg ZdZedz   ZdZ	y)TestHelpAlternatePrefixCharsr  z^;F)r  rK  rL  z^^foor   r  r  z;bz;;barr  r	  z-        usage: PROG [^^foo] [;b BAR]
        zf
        options:
          ^^foo              foo help
          ;b BAR, ;;bar BAR  bar help
        r   Nr[  rC   r   r   r  r  <  s[    DTEJGLz:D'
+ !#E   D Gr   r  c                   `    e Zd Z	  edd      Z edd       edd      gZg Zd	Zed
z   ZdZ	y)TestHelpNoHelpOptionalr  Fr}  r   r  r	  r  r  z-        usage: PROG [--foo FOO] spam
        zv
        positional arguments:
          spam       spam help

        options:
          --foo FOO  foo help
        r   Nr[  rC   r   r   r  r  Q  sU    G7G*%F% !#E   D Gr   r  c                   V    e Zd Z	  ed      Z ed       ed      gZg ZdZedz   ZdZ	y)	TestHelpNoner  rv  r   r  r  z
        positional arguments:
          spam

        options:
          -h, --help  show this help message and exit
          --foo FOO
        r   Nr[  rC   r   r   r  r  h  sM    ;'GF !#E   D Gr   r  c            	           e Zd Z	  ed      Z edddd       edd	d
d       edddd       edddd      gZg ZdZedz   ZdZ	y)TestHelpTupleMetavarOptionalr  rv  r[  ri   r  W1W2r  rx  r  r   r   r  X1X2r  r]  r{  Y1Y2Y3r  r	  r  Z1z]        usage: PROG [-h] [-w W1 [W2 ...]] [-x [X1 [X2 ...]]] [-y Y1 Y2 Y3] [-z [Z1]]
        z
        options:
          -h, --help        show this help message and exit
          -w W1 [W2 ...]    w
          -x [X1 [X2 ...]]  x
          -y Y1 Y2 Y3       y
          -z [Z1]           z
        r   Nr[  rC   r   r   r  r    sx    ,'Ds#|<Ds#|<Ds!-?@Ds#x8	 !#E   D Gr   r  c            	           e Zd Z	  ed      Z edddd       edd	d
d       edddd       edddd      gZg ZdZedz   ZdZ	y)TestHelpTupleMetavarPositionalr  rv  ri   r  r  r  r  r   r  r  r  r]  r  r{  r  r	  r  r  r  zI        usage: PROG [-h] W1 [W2 ...] [X1 [X2 ...]] Y1 Y2 Y3 [Z1]
        z
        positional arguments:
          W1 W2       w help
          X1 X2       x help
          Y1 Y2 Y3    y help
          Z1          z help

        options:
          -h, --help  show this help message and exit
        r   Nr[  rC   r   r   r  r    sx    <'Chc<@Chc<@Cha1CDChc7;	 !#E  
 
D Gr   r  c                       e Zd Z	  edej
                  d      Z edd       edd      gZ ed	d
       edd      gfgZdZ	e	dz   Z
dZy)TestHelpRawTextr  7Keep the formatting
    exactly as it is written

here
r  formatter_classr  r   z-    foo help should also
appear as given herer	  r  r  r  ?    This text
  should be indented
    exactly like it is here
r  r0  r  >        usage: PROG [-h] [--foo FOO] [--bar BAR] spam
        a  
        Keep the formatting
            exactly as it is written

        here

        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO       foo help should also
                      appear as given here

        title:
              This text
            should be indented
              exactly like it is here

          --bar BAR   bar help
        r   N)r!   r"   r#   rv   r-   RawTextHelpFormatterr   r   r:  rM  r  r  rC   r   r   r  r    s    'X%B%B 	G 1 	2F% 
W #B 
C gJ
'	(	*!E   D, Gr   r  c                       e Zd Z	  edej
                  d      Z edd       edd      gZ ed	d
       edd      gfgZdZ	e	dz   Z
dZy)TestHelpRawDescriptionr  r  r  r   z4  foo help should not
    retain this odd formattingr	  r  r  r  r  r  r0  r  r  a  
        Keep the formatting
            exactly as it is written

        here

        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help should not retain this odd formatting

        title:
              This text
            should be indented
              exactly like it is here

          --bar BAR   bar help
        r   N)r!   r"   r#   rv   r-   RawDescriptionHelpFormatterr   r   r:  rM  r  r  rC   r   r   r  r    s    'X%I%I 	G ; 	<F% 
W #B 
C gJ
'	(	*!E   D* Gr   r  c                   H   e Zd Z	  edej
                  d      Z edd       eddd	
       edej                  dd       edej                  dej                         eddd       edd       edddd      gZ	 edd       ede
dd       gfgZd!Zed"z   Zd#Zy$)%TestHelpArgumentDefaultsr  r  r  r   z)foo help - oh and by the way, %(default)sr	  r0  r   r  r  z--tazzWhether to taz itT)r  r  rp  z--corgezWhether to corge itr  zSet the quuxr  )r  rp  r  r  r5  r  woodenzbadger helprx  rp  r  r  r  rf  r  )r   rp  r  z        usage: PROG [-h] [--foo FOO] [--bar] [--taz | --no-taz] [--corge | --no-corge]
                    [--quux QUUX] [--baz BAZ]
                    spam [badger]
        ay  
        description

        positional arguments:
          spam                 spam help
          badger               badger help (default: wooden)

        options:
          -h, --help           show this help message and exit
          --foo FOO            foo help - oh and by the way, None
          --bar                bar help (default: False)
          --taz, --no-taz      Whether to taz it (default: True)
          --corge, --no-corge  Whether to corge it
          --quux QUUX          Set the quux (default: 42)

        title:
          description

          --baz BAZ            baz help (default: 42)
        r   N)r!   r"   r#   rv   r-   ArgumentDefaultsHelpFormatterr   r  r  r   r  r:  rM  r  r  rC   r   r   r  r    s    0X%K%K!#
 	GEFGLz:GH::$d	4Ih<<&0A0A	CH>26F%HCF
 
W-	0
gC*
=	>	@!E
   D* Gr   r  c                   R    e Zd Z	  edd      Z edddd      gZg Zd	Zed
z   ZdZ	y)TestHelpVersionActionr  r  r  -Vr  r  z3.6r  z&        usage: PROG [-h] [-V]
        z
        description

        options:
          -h, --help     show this help message and exit
          -V, --version  show program's version number and exit
        r   Nr[  rC   r   r   r  r  J  sK    6MBt[ERS "E   D Gr   r  c                       e Zd Z	  ed      Z eddddej                         edd	
       edd
      gZg ZdZ	e	dz   Z
y)TestHelpVersionActionSuppressr  rv  r`  r  r  r  )r  r  r  r   r  r	  r  r  r  r  N)r!   r"   r#   rv   r   r-   r  r   r:  rM  r  rC   r   r   r  r  ^  se    M'D+i""	$G*%F%	 !#E   Dr   r  c                       e Zd Z	  edd      Z edddd      gZd	D  cg c]  }t        |
       c}}} ZdZedz   ZdZ	yc c}}} w )TestHelpSubparsersOrderingr  display some subcommandsr  r`  r  r  rT  r  )r   r  r  r  r   r  6        usage: PROG [-h] [-v] {a,b,c,d,e} ...
        z
        display some subcommands

        positional arguments:
          {a,b,c,d,e}

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        rZ  N)
r!   r"   r#   rv   r   r   r;  rM  r  r  ).0rf   rv   s   000r   r  r  w  sv    ?'ACt[ERS *CD)B !d^)BDE  
 
DG'Ds   Ar  c            
           e Zd Z	  edd      Z edddd      gZd	ZeD  cg c]  \  }}t        ||
       c}}}} ZdZedz   Z	dZ
yc c}}}} w )"TestHelpSubparsersWithHelpOrderingr  r  r  r`  r  r  rT  r  ))r   za subcommand help)r  zb subcommand help)r  zc subcommand help)r  zd subcommand help)r   ze subcommand help)rf   r  r  a  
        display some subcommands

        positional arguments:
          {a,b,c,d,e}
            a            a subcommand help
            b            b subcommand help
            c            c subcommand help
            d            d subcommand help
            e            e subcommand help

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        rZ  N)r!   r"   r#   rv   r   r   subcommand_datar;  rM  r  r  )r  rf   r  rv   s   0000r   r  r    s    ?'ACt[ERSO 0?@/>t !d6/>@E   D"G1@s   A
r  c                       e Zd Zd Z eddej                        Z ede       ede       ede	d	
      gZ
g ZdZedz   ZdZy)TestHelpMetavarTypeFormatterc                     | S rQ   rC   rf  s    r   custom_typez(TestHelpMetavarTypeFormatter.custom_type  s    r   r  r  )r  r  r  r   r  r  r  z
SOME FLOAT)r   r  zF        usage: PROG [-h] [-b custom_type] [-c SOME FLOAT] int
        z
        description

        positional arguments:
          int

        options:
          -h, --help      show this help message and exit
          -b custom_type
          -c SOME FLOAT
        r   N)r!   r"   r#   r  rv   r-   MetavarTypeHelpFormatterr   r  r  r   r:  rM  r  r  rC   r   r   r  r    sr     M+3+L+LNs-t+6t%FH !#E   D Gr   r  c                       e Zd Z	 dZd Zy)!TestHelpUsageLongSubparserCommandNc                 <   d }t        j                  d|      }|j                  ddd      }|j                  dd	
       |j                  dd
       |j                  dd
       |j	                         }| j                  |t        j                  d             y )Nc                 0    t        j                  | d      S )N2   )max_help_position)r-   r  rv  s    r   custom_formatterzLTestHelpUsageLongSubparserCommand.test_parent_help.<locals>.custom_formatter  s    00LLr   r  )r  r  r  CMDzcommand to use)r  r  r  r!  zadd somethingr	  removezremove somethingza-very-long-commandzcommand that does somethinga}              usage: PROG [-h] CMD ...

            options:
              -h, --help             show this help message and exit

            commands:
              CMD                    command to use
                add                  add something
                remove               remove something
                a-very-long-command  command that does something
        )r-   r.   r  r  r  r   r  r   )r   r  parent_parsercmd_subparsersrb  s        r   rd  z2TestHelpUsageLongSubparserCommand.test_parent_help  s    	M !// 0

 '55J>C;K 6 M 	!!%'6 	" 	8 	!!('9 	" 	; 	!!"7'D 	" 	F $//1hoo 7 ' 	r   )r!   r"   r#   r!  rd  rC   r   r   r  r    s    FG!r   r  c                   t    e Zd Z	 dddZd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y)TestInvalidArgumentConstructorsN)errmsgc                x    t        j                         } | j                  t        ||j                  g|i | y rQ   )r-   r.   r#  r   r   r   r  rx   ry   r4   s        r   assertTypeErrorz/TestInvalidArgumentConstructors.assertTypeError  s<    ((*y&&2E2E 	0 $	0(.	0r   c                x    t        j                         } | j                  t        ||j                  g|i | y rQ   )r-   r.   r#  rC  r   r  s        r   assertValueErrorz0TestInvalidArgumentConstructors.assertValueError  s<    ((*z663F3F 	0 $	0(.	0r   c                     | j                  dd        | j                  dd       | j                  dd       | j                  di        y )	Nr   )rE  r  r*   )callbackrC   )callback_args)callback_kwargsr  r   s    r   test_invalid_keyword_argumentsz>TestInvalidArgumentConstructors.test_invalid_keyword_arguments  sN    Tt,TE2T4T26r   c                     | j                          dD ]/  }| j                  |      5  | j                  |       d d d        1 y # 1 sw Y   <xY w)Nr  r  r  r  )r  r>   r   r  s     r   test_missing_destinationz8TestInvalidArgumentConstructors.test_missing_destination  sF    3FV,$$F$3 -, 4,,s   AA	c                 H    | j                  d       | j                  d       y )Nr  z---r  r   s    r   test_invalid_option_stringsz;TestInvalidArgumentConstructors.test_invalid_option_strings!  s    d#e$r   c                 d    | j                  dd       | j                  dt        t        f       y )Nr   r  r  )r  r  r  r   s    r   test_invalid_typez1TestInvalidArgumentConstructors.test_invalid_type%  s,    gE2gS%L9r   c                     | j                  dd       | j                  dd       | j                  dd       | j                  ddd	       y )
Nr   r*   r  rF  r   )r  r  z
store-truezunknown action)r  r  r  r   s    r   test_invalid_actionz3TestInvalidArgumentConstructors.test_invalid_action)  sV    d51eE2g.ABgl%5 	 	7r   c                    t        j                         }|j                  d       | j                  t              5 }|j                  dd       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nr*   r(  rE  rF  z+dest supplied twice for positional argument)r-   r.   r   r   rC  r  r   r  r  s      r   test_multiple_destz2TestInvalidArgumentConstructors.test_multiple_dest0  sm    ((*'z*bE2 +C",,'	) +*s   A>>Bc           	         dD ]  }| j                  |      5  t        t              t        d      t        ddg      fD ]E  }| j                  |	      5   | j                  dd|i|  | j                  dd|i| d d d        G | j                  d
|d       | j                  d|d       d d d         y # 1 sw Y   xY w# 1 sw Y   xY w)N)r  r   r  r  r  r  r  r  rw  r   r  r  )attrsr   r  r   r   r  )r   r   )r>   r  r  r  )r   r  r  s      r   test_no_argument_actionsz8TestInvalidArgumentConstructors.test_no_argument_actions8  s    0FV,"ndo"C:68EE2,,,J&JEJ,,,II5I 328
 $$T&$B$$Sq$A -,0
 32 -,s#   ?C	)B=	 2C	=CC		C	c                     dD ]E  }| j                  |      5  | j                  dd|       | j                  dd|       d d d        G y # 1 sw Y   RxY w)N)r   r  r  r  r   r*   r  r  rx  r  r>   r  r  s     r   !test_no_argument_no_const_actionszATestInvalidArgumentConstructors.test_no_argument_no_const_actionsD  sU    <FV,$$Tv$F $$TV$D -, =,,s   )AA	c           
      :   dD ]  }| j                  |      5  |dk(  rdn|}| j                  dd|d| d	       | j                  d
d|d| d	       dD ],  }| j                  dd||       | j                  d
d||       . 	 d d d         y # 1 sw Y   xY w)Nr  r  r  r  r   r   z
nargs for z actions must be != 0)rx  r  r  r  )rv  r  r  r*   )r  rx  r  )r>   r  )r   r  action_namerx  s       r   #test_more_than_one_argument_actionszCTestInvalidArgumentConstructors.test_more_than_one_argument_actionsN  s    3FV,*0H*<h&%%d!F'}4IJ & L%%fAf'}4IJ & L +E))$e05f * F))&05f * F + -, 4,,s   A-BB	c                     dD ]1  }| j                  |      5  | j                  dd|       d d d        3 y # 1 sw Y   >xY w)N)r  r  r  r   r  r  r  r  s     r   test_required_const_actionsz;TestInvalidArgumentConstructors.test_required_const_actions_  s>    5FV,$$TV$D -, 6,,s	   8A	c                     | j                  dd       | j                  ddd       | j                  ddt        j                         y )Nr  parsersr  r  )r  r  )r  r   )r  r-   r.   r   s    r   "test_parsers_action_missing_paramszBTestInvalidArgumentConstructors.test_parsers_action_missing_paramse  sK    Yy9YyvFYy*2*A*A 	 	Cr   c                 *    | j                  dd       y )Nr*   Tr  r   r   s    r   test_required_positionalz8TestInvalidArgumentConstructors.test_required_positionalk  s    UT2r   c                      G d dt                G fddt              }t        j                         }| j	                  |j
                  d|       | j	                  |j
                  d|       y )Nc                       e Zd Zy)ITestInvalidArgumentConstructors.test_user_defined_action.<locals>.SuccessNr  rC   r   r   Successr"  p  r  r   r#  c                   "    e Zd Z	 d fd	Zd Zy)HTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Actionc                 2    |dk(  r|u r|u r        y y y )Nr  rC   )r   option_stringsr)  r  rp  r  r#  s         r   r   zQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__init__u  s2     6>'"g-"))O . ( "r   c                      y rQ   rC   rz   s      r   rx  zQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__call__  s    r   N)F)r!   r"   r#   r   rx  )r#  s   r   r  r%  s  s     #(	,r   r  r  )r  rp  r  r  )r   r   r-   r.   r   r   )r   r  r4   r#  s      @r   test_user_defined_actionz8TestInvalidArgumentConstructors.test_user_defined_actionn  sy    	i 		V 	  ((*'6#6#6!' 	 	I'6#6#6!' 	 	Ir   )r!   r"   r#   r  r  r  r  r  r
  r  r  r  r  r  r  r  r  r)  rC   r   r   r  r    s^    7,0 0
 .2 0
74%:7)
BEF"EC3Ir   r  c                       e Zd Zd Zd Zy)TestActionsReturnedc                 >   t        j                         }|j                  d      }| j                  |j                  d       |j                  dd      }| j                  |j                  d       |j                  dd      }| j                  |j                  d       y )	Nr   r*   r  r0  rE  r   r  r   )r-   r.   r   r   r)  r   r4   r  s      r   r  zTestActionsReturned.test_dest  s    ((*$$W-e,$$T73e,$$T40c*r   c                 8   t        j                         }|j                  ddddt        ddgddd	
	      }| j	                  |j
                  d       | j	                  |j                  d       | j	                  |j                  d       | j	                  |j                  t               | j	                  |j                  ddg       | j	                  |j                  d       | j	                  |j                  d       | j	                  |j                  d	       y )Nr   r  r  r  rv  r  r  BARrF  )rx  r  rp  r   r  r  r  r)  )r-   r.   r   r  r   rx  r  rp  r   r  r  r  r)  r-  s      r   	test_misczTestActionsReturned.test_misc  s    ((*$$WCr-/cAq6*/U % L 	s+r*,c*!Q0e,/e,r   N)r!   r"   r#   r  r0  rC   r   r   r+  r+    s    +-r   r+  c                   $    e Zd Zd Zd Zd Zd Zy)TestConflictHandlingc                 P    | j                  t        t        j                  d       y )Nr*   )conflict_handler)r   rC  r-   r.   r   s    r   test_bad_typez"TestConflictHandling.test_bad_type  s"    *h&=&=+0 	 	2r   c                    t        j                         }|j                  d       | j                  t         j                  |j                  d       |j                  d       | j                  t         j                  |j                  d       y )Nr   r  )r-   r.   r   r   r$  r3   s     r   test_conflict_errorz(TestConflictHandling.test_conflict_error  sn    ((*D!(00 --t	5H%(00 --x	9r   c                    t         j                  } |dd      }|j                  dd       |j                  dd       | j                  |j	                         t        j                  d             |j                  d	d
       |j                  d	d       | j                  |j	                         t        j                  d             y )Nr  resolve)r  r4  r   zOLD Xr	  zNEW Xz            usage: PROG [-h] [-x X]

            options:
              -h, --help  show this help message and exit
              -x X        NEW X
            r  OLD_SPAMrz  NEW_SPAMz            usage: PROG [-h] [-x X] [--spam NEW_SPAM]

            options:
              -h, --help       show this help message and exit
              -x X             NEW X
              --spam NEW_SPAM
            )r-   r.   r   r   r  r  r   )r   r  r4   s      r   test_resolve_errorz'TestConflictHandling.test_resolve_error  s    ,,
)DDw/Dw/++-x @ 0 	 	Hj9Hj9++-x @ 0 	r   c                    t        j                         }|j                         }|j                  ddg       | j	                  t         j
                  |j                  d       | j	                  t         j
                  |j                  d       | j	                  t         j
                  |j                  ddg       | j	                  t         j
                  |j                  ddg       y )Nfullnamealiasr  r   )r-   r.   r  r  r   r$  )r   r4   sps      r   test_subparser_conflictz,TestConflictHandling.test_subparser_conflict  s    ((*""$
j7)4(00--	5(00--	2(00--:, 	 	H(00--7) 	 	Er   N)r!   r"   r#   r5  r7  r<  rA  rC   r   r   r2  r2    s    292Er   r2  c                   D    e Zd Z	 d Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestOptionalsHelpVersionActionsc                     | j                  t              5 }|j                  |j                                d d d        | j	                  |j                         j                  j                         y # 1 sw Y   >xY wrQ   )r   r   r=   r   r   r  r  r   )r   r4   r   r  s       r   assertPrintHelpExitz3TestOptionalsHelpVersionActions.assertPrintHelpExit  sY    23rhnn./ 4++-r||/B/BC 43s    A33A<c                 F    | j                  t        |j                  |       y rQ   )r   r   r=   r  s      r   r  z9TestOptionalsHelpVersionActions.assertArgumentParserError  s    -v/@/@$Gr   c                     t               }|j                  dddd       | j                  |d       | j                  |d       | j                  t        t
        |d       y )	Nr`  r  r  r  r  r7   rQ  format_versionr   r   rE  r   r  r   r3   s     r   test_versionz,TestOptionalsHelpVersionActions.test_version  sV    +-D+iO  .  2.'6;KLr   c                 
   t        d      }|j                  dddd       | j                  t              5 }|j	                  dg       d d d        | j                  dj                  j                         y # 1 sw Y   0xY w)	NPPPrv  r`  r  r  z%(prog)s 3.5r  zPPP 3.5
r   r   r   r   r=   r   r  r   r  s      r   test_version_formatz3TestOptionalsHelpVersionActions.test_version_format  sl    +7D+iX23rtf% 4bll&9&9: 43s   A99Bc                     t        d      }|j                  dddd       | j                  |d       | j                  |d	       | j                  t        t
        |d
       y )NFr5  r`  r  r  r  r  r7   rQ  rH  )r   r   r  r   r  r   r3   s     r   test_version_no_helpz4TestOptionalsHelpVersionActions.test_version_no_help  sX    +U;D+iO&&vt4&&vx8.'6;KLr   c                    t        d      }|j                  ddd       | j                  t              5 }|j	                  dg       d d d        | j                  dj                  j                         y # 1 sw Y   0xY w)Nr  rv  r  r  z%(prog)s 3.7r  zXXX 3.7
rM  r  s      r   test_version_actionz3TestOptionalsHelpVersionActions.test_version_action  sj    +7DNK23rtf% 4bll&9&9: 43s   A88Bc                     t        d      }| j                  |d       | j                  |d       | j                  |d       | j                  |d       y )NFr5  r7   rQ  r`  r  )r   r  r3   s     r   test_no_helpz,TestOptionalsHelpVersionActions.test_no_help  sL    +U;&&vt4&&vx8&&vt4&&v{;r   c                    t               }|j                  dd       |j                  dd       | j                  |d       | j                  |d       | j                  |d       | j	                  t
        t        |d       y )	Nr   r  r  r  r  r`  r  rH  )r   r   rE  r  r   r  r   r3   s     r   test_alternate_help_versionz;TestOptionalsHelpVersionActions.test_alternate_help_version  su    +-D0D3  .&&vt4&&v{;.'6;KLr   c                 T   t               }|j                  ddd       |j                  dd       |j                  d       g d	}|d
dgz   }|D ]V  }|D ]	  }|d|} | j                  |dz         | j                  ||dz         | j                  t        t
        |d       X y )Nr  r  r  r  r   r   r  r]  )r   r   r*   z-x barzbaz -xz--bad-optionzfoo bar bazz %s r7   rQ  rH  rI  )r   r4   valid_prefixesvalid_suffixesprefixsuffixra  s          r   !test_help_version_extra_argumentszATestOptionalsHelpVersionActions.test_help_version_extra_arguments  s    +-K	5ID6C  ?'>=*II$F((.7 )$$VVd];$$VVh->?ngv?OP %r   N)r!   r"   r#   rE  r  rJ  rN  rP  rR  rT  rV  r\  rC   r   r   rC  rC    s8    +D
HM;M;<MQr   rC  c                   >    e Zd Z	 d Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestStringsc                 V    t         t        fD ]  }| j                   ||      |        y rQ   )r   r  r   )r   objresult_stringr8   s       r   assertStringEqualzTestStrings.assertStringEqual4  s$    $KDT#Y6  r   c                 p    t        j                  g dddddg dddd	
	      }d}| j                  ||       y )N)r   r  r  r  r  r  r  rv  r  r{  FHELPMETAVAR	r'  r)  r   rx  rp  r  r  r  r  zAction(option_strings=['--foo', '-a', '-b'], dest='b', nargs='+', const=None, default=42, type='int', choices=[1, 2, 3], required=False, help='HELP', metavar='METAVAR'))r-   r  rb  )r   optionrg  s      r   test_optionalzTestStrings.test_optional8  sH    0	Q 	 	vv.r   c                     t        j                  g dt        ddg dddd	      }d	t        z  }| j                  ||       y )
Nr   r  r  )r  g      ?r  TzH HH HzMV MV MVrg  zAction(option_strings=[], dest='x', nargs='?', const=None, default=2.5, type=%r, choices=[0.5, 1.5, 2.5], required=True, help='H HH H', metavar='MV MV MV'))r-   r  r  rb  )r   argumentrg  s      r   test_argumentzTestStrings.test_argumentI  sQ    ??#	 @BGH 	 	x0r   c                 Z    t        j                  dd      }d}| j                  ||       y )Nr  r  r@  zNamespace(foo=42, bar='spam')r-   r"  rb  r   r%  rg  s      r   test_namespacezTestStrings.test_namespaceZ  s)    BF30r6*r   c                 Z    t        j                  di ddi}d}| j                  ||       y )N"quotezNamespace(**{'"': 'quote'})rC   rn  ro  s      r   'test_namespace_starkwargs_notidentifierz3TestStrings.test_namespace_starkwargs_notidentifier_  s.    13.12r6*r   c                 ^    t        j                  dddiddi}d}| j                  ||       y )Nr   rv  rr  rs  z Namespace(a=1, **{'"': 'quote'})rC   rn  ro  s      r   2test_namespace_kwargs_and_starkwargs_notidentifierz>TestStrings.test_namespace_kwargs_and_starkwargs_notidentifierd  s3    6!6W~67r6*r   c                 Z    t        j                  di ddi}d}| j                  ||       y )NvalidTzNamespace(valid=True)rC   rn  ro  s      r   $test_namespace_starkwargs_identifierz0TestStrings.test_namespace_starkwargs_identifieri  s.    27D/2(r6*r   c                 z    t        j                  d      }dt         j                  z  }| j                  ||       y )Nr  rv  zvArgumentParser(prog='PROG', usage=None, description=None, formatter_class=%r, conflict_handler='error', add_help=True))r-   r.   HelpFormatterrb  )r   r4   rg  s      r   test_parserzTestStrings.test_parsern  s<    ((f5'556 	 	vv.r   N)r!   r"   r#   rb  ri  rl  rp  rt  rv  ry  r|  rC   r   r   r^  r^  1  s-    =7/"1"+
+
+
+
/r   r^  c                       e Zd Zd Zd Zd Zy)TestNamespacec                    t        j                         }| j                  t        t        |d       t        j                  dd      }| j                  |j                  d       | j                  |j                  d       y )Nr   r  r  rM  )r-   r"  r   r  r   r   r   r  r$  s     r   test_constructorzTestNamespace.test_constructor|  s^    !.'2s;"/r"v&r   c                    t        j                  dd      }t        j                  dd      }t        j                  d      }t        j                  d      }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j	                  ||k7         | j	                  ||k7         | j	                  ||k7         | j	                  ||k7         y )Nrv  r  rM  )r  r   )r   r  )r-   r"  r   assertNotEqual
assertTrue)r   ns1ns2ns3ns4s        r   test_equalityzTestNamespace.test_equality  s      1*  1*  1%  1%c"C%C%C%C%s
#s
#s
#s
#r   c                     t        j                  dd      }| j                  |j                  d       t               | j                  |j                  d       t               y )Nrv  r  rM  )r-   r"  r  r   NotImplemented__ne__r$  s     r   $test_equality_returns_notimplementedz2TestNamespace.test_equality_returns_notimplemented  s@    !q)biio~6biio~6r   N)r!   r"   r#   r  r  r  rC   r   r   r~  r~  z  s    '$ 7r   r~  c                       e Zd Zd Zd Zd Zy)TestEncodingc                     t         j                  j                  |      \  }}|dz  }t        |dd      5 }|j	                          d d d        y # 1 sw Y   y xY w)Nz.pyr  r   rj   )rU   r]   splitextrl   r  )r   r]   r   r  s       r   _test_module_encodingz"TestEncoding._test_module_encoding  sF    ''""4(a$g.!FFH /..s   AAc                 B    | j                  t        j                         y rQ   )r  r-   __file__r   s    r   test_argparse_module_encodingz*TestEncoding.test_argparse_module_encoding  s    ""8#4#45r   c                 .    | j                  t               y rQ   )r  r  r   s    r   "test_test_argparse_module_encodingz/TestEncoding.test_test_argparse_module_encoding  s    ""8,r   N)r!   r"   r#   r  r  r  rC   r   r   r  r    s    6-r   r  c                       e Zd Zd Zy)TestArgumentErrorc                 j    d}t        j                  d |      }| j                  t        |      |       y )Nzmy error here)r-   r$  r   r   )r   r   r   s      r   test_argument_errorz%TestArgumentError.test_argument_error  s-    &&tS1US)r   N)r!   r"   r#   r  rC   r   r   r  r    s    *r   r  c                       e Zd Zd Zy)TestArgumentTypeErrorc                    d }t        dd      }|j                  d|       | j                  t              5 }|j	                  dg       d d d        | j                  dj                  j                         y # 1 sw Y   0xY w)	Nc                 ,    t        j                  d      )Nspam!)r-   ArgumentTypeErrorrf  s    r   r  z<TestArgumentTypeError.test_argument_type_error.<locals>.spam  s    ,,W55r   r  Fr}  r   r  r  z-usage: PROG x
PROG: error: argument x: spam!
)r   r   r   r   r=   r   r  r   )r   r  r4   r  s       r   test_argument_type_errorz.TestArgumentTypeError.test_argument_type_error  su    	6 ,%HCd+23rug& 4J,,	. 43s   A;;BN)r!   r"   r#   r  rC   r   r   r  r    s    
.r   r  c                       e Zd Zd Zd Zd Zy)TestMessageContentErrorc                    t        dd      }|j                  dt               |j                  dt        d       |j                  d	t        d
       | j	                  t
              5 }|j                  g        d d d        t        j                        }| j                  |d       | j                  |d       | j                  |d	       | j	                  t
              5 }|j                  dg       d d d        t        |j                        }| j                  |d       | j                  |d       | j                  |d	       | j	                  t
              5 }|j                  ddg       d d d        t        |j                        }| j                  |d       | j                  |d       | j                  |d	       y # 1 sw Y   MxY w# 1 sw Y   xY w# 1 sw Y   nxY w)Nr  r   r  req_posr  -req_optTr  need_oner  )r   rx  req_optmyXargumentz
-req_opt=1)
r   r   r   r  r   r   r=   r  r@   r#  r   r4   r  r   s       r   %test_missing_argument_name_in_messagez=TestMessageContentError.test_missing_argument_name_in_message  s   +rBIC0JS4@JS<23rb! 4",,i(i(j)23r}o. 4",,i(i(j)23r}l;< 4",,i(i(j)# 43 43 43s$   *G$GG GG G)c                    t        dd      }|j                  dt               |j                  dt        d       |j                  d	t        d
d       | j                  t              5 }|j                  g        d d d        t        j                        }| j                  |d       | j                  |d       | j                  |d       | j                  t              5 }|j                  dg       d d d        t        |j                        }| j                  |d       | j                  |d       | j                  |d       y # 1 sw Y   xY w# 1 sw Y   axY w)Nr  r   r  r  r  z	--req_optTr  z	--opt_optr  )r   rx  rp  r  opt_optz--req_opt=1)r   r   r   r  r  r   r   r=   r  r@   r#  r  s       r   %test_optional_optional_not_in_messagez=TestMessageContentError.test_optional_optional_not_in_message  s*   +rBIC0KcDAKd#$( 	 	*23rb! 4",,i(i(i(23r}o. 4",,i(i(i( 43 43s   +E%EEE!c                 P   t        dd      }|j                  d       |j                  ddd       | j                  t              5 }|j	                  g        d d d        t        j                        }| j                  |d       | j                  |d       y # 1 sw Y   CxY w)	Nr  r   r  r  optional_positionalr  rI  r  )	r   r   r   r   r=   r   r  r@   r#  r  s       r   'test_optional_positional_not_in_messagez?TestMessageContentError.test_optional_positional_not_in_message  s    +rBI&1fM23rb! 4",,i(34	 43s   BB%N)r!   r"   r#   r  r  r  rC   r   r   r  r    s    *2)&5r   r  c                       e Zd Zd Zy)TestTypeFunctionCallOnlyOncec                       fd}t        j                         }|j                  d|d       |j                  dj	                               } j                  t        d      |       y )Nc                 *    j                  | d       y)Nr  foo_convertedr   )string_to_convertr   s    r   r  zLTestTypeFunctionCallOnlyOnce.test_type_function_call_only_once.<locals>.spam  s    .8"r   r   rE  r  z--foo spam!r  r  )r-   r.   r   r=   r   r   r}   r   r  r4   rx   s   `   r   !test_type_function_call_only_oncez>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_once  s[    	# ((*G$>  !4!4!670$7r   N)r!   r"   r#   r  rC   r   r   r  r    s    8r   r  c                   $    e Zd Zd Zd Zd Zd Zy)TestTypeFunctionCalledOnDefaultc                       fd}t        j                         }|j                  d|d       |j                  g       } j	                  t        d      |       y )Nc                 *    j                  | d       y)Nr   r  r  )int_to_convertr   s    r   r  z]TestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default.<locals>.spam  s    ^Q/"r   r   r   r  r  r-   r.   r   r=   r   r}   r  s   `   r   /test_type_function_call_with_non_string_defaultzOTestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default  sQ    	# ((*G$:  $D)r   c                     d }t        j                         }|j                  d|d       |j                  g       }| j	                  t        d      |       y )Nc                      y)Nr  rC   )r  s    r   r  zYTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default.<locals>.spam)  s    "r   r   0r  r  r  r  r  s       r   +test_type_function_call_with_string_defaultzKTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default(  sQ    	# ((*G$<  $0$7r   c                     d }t        j                         }|j                  d|d       |j                  g       }| j	                  t        d      |       y )Nc                     | dz   S )Nr  rC   )str_to_converts    r   r  zYTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default.<locals>.extend3  s    !C''r   --testr  r  z**)rD  r  )r   r  r4   rx   s       r   )test_no_double_type_conversion_of_defaultzITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default2  sR    	( ((*H63?  $ 	-r   c                     t        j                         }|j                  ddt        g d       |j	                  g       }| j                  |j                  g        y )Nr  rD  r  )r)  r   rp  r  )r-   r.   r   r   r=   r   rD  r  s      r   test_issue_15906z0TestTypeFunctionCalledOnDefault.test_issue_15906>  sT     ((*H6$&x 	 	9  $B'r   N)r!   r"   r#   r  r  r  r  rC   r   r   r  r    s    	*8
.(r   r  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestParseKnownArgsc                 N    t        j                         }|j                  d       y )NrC   r-   r.   r=   r3   s     r   test_arguments_tuplez'TestParseKnownArgs.test_arguments_tupleN      ((*"r   c                 N    t        j                         }|j                  g        y rQ   r  r3   s     r   test_arguments_listz&TestParseKnownArgs.test_arguments_listR  r  r   c                 p    t        j                         }|j                  d       |j                  d       y )Nr   r   r-   r.   r   r=   r3   s     r   test_arguments_tuple_positionalz2TestParseKnownArgs.test_arguments_tuple_positionalV  s,    ((*C &!r   c                 r    t        j                         }|j                  d       |j                  dg       y )Nr   r  r3   s     r   test_arguments_list_positionalz1TestParseKnownArgs.test_arguments_list_positional[  s.    ((*C 3% r   c                     t        j                         }|j                  d       |j                  dj	                               \  }}| j                  t        d      |       | j                  ddg|       y )Nr   z--foo F --bar --bazFr  r0  rf  )r-   r.   r   r  r   r   r}   )r   r4   rx   extrass       r   test_optionalsz!TestParseKnownArgs.test_optionals`  se    ((*G$../D/J/J/LMfd+'7+V4r   c                 :   t        j                         }|j                  dddt               |j                  dd       |j                  d       g d	}|j	                  |      \  }}| j                  t        d
dd      |       | j                  g d|       y )Nr`  r  rv  )rx  r  r   r  r  r  r5  )rC  ra  r   r`  r  r  r{  TrC  )vr  r5  )ra  r   r  )r-   r.   r   r  r  r   r}   )r   r4   r   rx   r  s        r   
test_mixedzTestParseKnownArgs.test_mixedg  s    ((*D13?H];H%2..t4fad37>,f5r   c                     t        j                         }|j                  ddd       |j                  g       }| j	                  t        g       |       y )Nr   r  rq  )rx  r  r   r  r  s      r   test_zero_or_more_optionalz-TestParseKnownArgs.test_zero_or_more_optionalr  sI    ((*CsJ?  $b4(r   N)
r!   r"   r#   r  r  r  r  r  r  r  rC   r   r   r  r  L  s%    "
!
5	6)r   r  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestDoubleDashc                 ~   t        j                  d      }|j                  dd       |j                  dd       |j                  dg      }| j	                  t        d	g 
      |       | j                  t         j                  d|j                  dd	g       |j                  dg      }| j	                  t        d	g 
      |       | j                  t         j                  d|j                  dd	g       |j                  g d      }| j	                  t        dddg
      |       |j                  g d      }| j	                  t        dddg
      |       |j                  g d      }| j	                  t        d g d
      |       |j                  g d      }| j	                  t        d g d
      |       y )NFr   r  r   rE  r  rw  --foo=--r  r@  z(argument -f/--foo: expected one argument-f--)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   r  r  r  r   r  )r-   r.   r   r=   r   r}   r#  r$  r  s      r   test_single_argument_optionz*TestDoubleDash.test_single_argument_optionz  s   ((u=D'*E-  *."-t4x556	0   &*"-t4x556d|	-   !?@#s4d;  !9:#s4d;  !?@*BCTJ  !JK*MNPTUr   c                    t        j                  d      }|j                  ddd       |j                  dd       |j                  dg      }| j	                  t        d	gg 
      |       |j                  dd	g      }| j	                  t        g g 
      |       |j                  dg      }| j	                  t        d	gg 
      |       |j                  dd	g      }| j	                  t        g g 
      |       |j                  g d      }| j	                  t        ddgddg
      |       |j                  g d      }| j	                  t        ddgddg
      |       |j                  g d      }| j	                  t        d g d
      |       |j                  g d      \  }}| j	                  t        dgddg
      |       | j	                  |d	dg       y )NFr   r  r   r  rw  rE  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  )r   r  r   r  r  r  )r-   r.   r   r=   r   r}   r  )r   r4   rx   r   s       r   test_multiple_argument_optionz,TestDoubleDash.test_multiple_argument_option  s   ((u=D'5E-  *.B/6  '41+T2  &*B/6  $.+T2  !DEc
c
;TB  !>?c
c
;TB  !DE*GH$O,,-PQ
dC:6=c{+r   c                 l   t        j                  d      }|j                  d       |j                  dd       |j                  g d      }| j	                  t        dd	d
g      |       |j                  g d      }| j	                  t        dd	d
g      |       |j                  g d      }| j	                  t        dd	d
g      |       |j                  g d      }| j	                  t        dg d      |       |j                  g d      }| j	                  t        dg d      |       y )NFr   r*   rE  r  rw  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  r  r   r  r  r  r  r  r  s      r   test_multiple_double_dashesz*TestDoubleDash.test_multiple_double_dashes  s	   ((u=E"E-  !67#s4d;  !67#s4d;  !67#s4d;  !<=)9:DA  !BC*?@$Gr   c                    t        j                  d      }|j                  d       |j                  dd       |j                  g d      }| j	                  t        dd	d
g      |       |j                  g d      }| j	                  t        dd	d
g      |       |j                  g d      }| j	                  t        dg d      |       |j                  g d      }| j	                  t        dg d      |       t        j                  d      }|j                  d       |j                  dd       |j                  g d      }| j	                  t        dg d      |       y )NFr   r*   rE  r  rw  r  r   r  r  r@  r  r  r  r  r   )r   r   r  r  r  r  )r  r  r  r  r  r  s      r   test_remainderzTestDoubleDash.test_remainder  s7   ((u=E"E/  !67#s4d;  !67#s4d;  !67)9:DA  !<=)9:DA((u=G$E/  !EF)?@$Gr   c                 h   t        j                  d      }|j                  d       |j                         }|j	                  d      }|j                  d       |j                  dd       |j                  g d	      }| j                  t        d
dddg      |       |j                  g d      }| j                  t        d
d g d      |       |j                  g d      }| j                  t        d
d g d      |       |j                  g d      }| j                  t        d
d g d      |       |j                  g d      }| j                  t        d
dddg      |       |j                  g d      }| j                  t        d
dddg      |       |j                  g d      }| j                  t        d
d g d      |       |j                  g d      }| j                  t        d
d g d      |       | j                  t         j                  d|j
                  g d       y )NFr   r*   r  r  rE  r  rw  )r   r  r   r  r  r  r   r  r   r  r*   r  rE  )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  )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  r  r  r   r  r  invalid choice: '--')r  r   r  r  r   r  
r-   r.   r   r  r  r=   r   r}   r#  r$  r   r4   r  r  rx   s        r   test_subparserzTestDoubleDash.test_subparser  s   ((u=E"**,
''.T"U#.  !BCsc
;TB  !HIt1FGN  !HIt1FGN  !HIt1FGN  !HIsc
;TB  !HIsc
;TB  !CDt1ABDI  !IJt1ABDIx55"A	Cr   c                    t        j                  d      }|j                  dd       |j                         }|j	                  d      }|j                  d       |j                  dd       |j                  g d	      }| j                  t        d
dgdddg      |       | j                  t         j                  d|j
                  g d       y )NFr   r   r  rw  r  r  rE  )	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  s        r   -test_subparser_after_multiple_argument_optionz<TestDoubleDash.test_subparser_after_multiple_argument_option  s    ((u=G3/**,
''.T"U#.  !VWc
cSzBDIx55"J	Lr   N)	r!   r"   r#   r  r  r  r  r  r  rC   r   r   r  r  y  s%    V0,.H H(C8Lr   r  c                   $    e Zd Zd Zd Zd Zd Zy)TestIntermixedArgsc           	         t        j                  d      }|j                  dd       |j                  ddd	      }|j                  d
       |j                  ddt               dj	                         }|j                  |      }| j                  t        dd
dg d      |       |j                  |      \  }}| j                  t        dd
ddg      |       | j                  ddg|       |j                  |      \  }}| j                  t        dd
dg d      |       | j                  g |       dj	                         }|j                  |      \  }}| j                  t        dd
dg d      |       | j                  dg|       dj	                         }|j                  |      \  }}| j                  t        dd
dg d      |       | j                  dg|       dj	                         }|j                  |      \  }}| j                  t        dd
dg d      |       | j                  dg|       | j                  |j                         | j                  |j                  d       y )Nr  rv  r   r*   r(  r0  rE  Tr  cmdrestr  )rx  r   zcmd --foo x 1 --bar y 2 3r]  r   rd  )rE  r  r*   r   rv  r  r  z!cmd --foo x --error 1 2 --bar y 3z--errorz!cmd --foo x 1 --error 2 --bar y 3z!cmd --foo x 1 2 --error --bar y 3)r-   r.   r   r  r   parse_intermixed_argsr   r}   r  parse_known_intermixed_argsr  rM  r  )r   r4   rE  r   rx   r  s         r   
test_basiczTestIntermixedArgs.test_basic  s3   ((f5G%0!!'!EE"F#C8*002++D1CiH$O..t4fCqcBDI#sV,99$?fCiH$OV$ 388:99$?fCiH$O)f-288:99$?fCiH$O)f-288:99$?fCiH$O)f- 	&,,'t,r   c                 f   t        d      }|j                  d       |j                  d       |j                  dd       dj                         }| j                  t              5 }|j                  |       d d d        | j                  t        j                        d	       y # 1 sw Y   /xY w)
Nr  rv  r  r   r]  r  rw  r  z\.\.\.)	r   r   r   r   r   r  r@   r   r  )r   r4   r   r  s       r   r  z!TestIntermixedArgs.test_remainder#  s    +8D!C Cu-!!# y)R((. *R\\*I6 *)s   'B''B0c                 v   t        j                  dd      }|j                  d      }|j                  ddd	       |j                  d
d       |j                  dddd       |j	                  dj                               }| j                  t        ddgdd       |       |j	                  dj                               }| j                  t        ddgdd       |       | j                  t         j                  d|j                  dj                                | j                  |j                  d       y )Nr  Fr  r!  Tr  r   r   r  r  r  r  r	  r5  r  r7  r  r  z	--foo 1 2r=  r  )r5  r*   r  z	1 --foo 2z-one of the arguments --foo --spam is requiredr<  )r-   r.   r;  r   r  r   r   r}   r#  r$  r  r   r4   r   rx   s       r   test_required_exclusivez*TestIntermixedArgs.test_required_exclusive0  s   ((fEJ33T3B7<eD8&1HC8L++K,=,=,?@C:4dCTJ++K,=,=,?@C:4dCTJx55?,,ekkm	= 	.r   c                    t        j                  dd      }|j                  d      }|j                  ddd	       |j                  d
d       |j                  dddd       |j	                  dg      }| j                  t        dd d      |       |j	                  ddg      }| j                  t        dd ddg      |       | j                  t         j                  d|j                  g        | j                  t         j                  d|j                  g d       | j                  t         j                  d|j                  g d       | j                  |j                  d       y )Nr  Fr  Tr  r   r   r  r  r  r  r	  r5  r  r7  r  r  r  r   r  z4one of the arguments --foo --spam badger is requiredz0argument badger: not allowed with argument --foo)r   r   r  )r   r   r  )
r-   r.   r;  r   r  r   r}   r#  r$  r  r  s       r   'test_required_exclusive_with_positionalz:TestIntermixedArgs.test_required_exclusive_with_positional@  sL   ((fEJ33T3B7<eD8&183(K++WI64<dC++S#J7D#sDdKx55F,,b	2 	x55B,,.A	C 	x55B,,.A	C 	.r   N)r!   r"   r#   r  r  r  r
  rC   r   r   r  r    s    $-L7/ /r   r  c                       e Zd Zd Zy)!TestIntermixedMessageContentErrorc                 L   t        dd      }|j                  dt               |j                  dt        d       | j	                  t
              5 }|j                  g        d d d        t        j                        }| j                  |d       | j                  |d	       | j	                  t
              5 }|j                  g        d d d        t        |j                        }| j                  |d       | j                  |d	       y # 1 sw Y   xY w# 1 sw Y   OxY w)
Nr  r   r  r  r  r  Tr  r  )
r   r   r   r  r   r   r=   r  r@   r  r  s       r   r  zGTestIntermixedMessageContentError.test_missing_argument_name_in_messageZ  s    +rBIC0JS4@23rb! 4",,i(i(23r((, 4",,i(i( 43 43s   D:DDD#N)r!   r"   r#   r  rC   r   r   r  r  W  s    )r   r  c                   *   e 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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&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2y1)2TestAddArgumentMetavarz,length of metavar tuple does not match nargsc                 T    t        j                         }|j                  d||       y )Nr   rx  r  )r-   r.   r   )r   rx  r  r4   s       r   do_test_no_exceptionz+TestAddArgumentMetavar.do_test_no_exceptions  s%    ((*G5'Br   c                    t        j                         }| j                  t              5 }|j	                  d||       d d d        | j                  j                  j                  d   | j                         y # 1 sw Y   =xY w)Nr   r  r   )	r-   r.   r   rC  r   r   r  rx   EXPECTED_MESSAGE)r   rx  r  r4   r  s        r   do_test_exceptionz(TestAddArgumentMetavar.do_test_exceptionw  sh    ((*z*bugF +**1-t/D/DE +*s   A;;Bc                 *    | j                  d d       y )Nr=  r  r  r   s    r   test_nargs_None_metavar_stringz5TestAddArgumentMetavar.test_nargs_None_metavar_string  s    !!c!:r   c                 :    | j                  d t                      y )Nr  r  tupler   s    r   test_nargs_None_metavar_length0z6TestAddArgumentMetavar.test_nargs_None_metavar_length0  s    T57;r   c                 *    | j                  d d       y )Nr  r  r  r   s    r   test_nargs_None_metavar_length1z6TestAddArgumentMetavar.test_nargs_None_metavar_length1  s    !!f!=r   c                 *    | j                  d d       y )Nr=  r  r  r  r   s    r   test_nargs_None_metavar_length2z6TestAddArgumentMetavar.test_nargs_None_metavar_length2  s    T:>r   c                 *    | j                  d d       y )Nr  r  r!  r   s    r   test_nargs_None_metavar_length3z6TestAddArgumentMetavar.test_nargs_None_metavar_length3  s    T?Cr   c                 *    | j                  dd       y )Nr  r=  r  r  r   s    r   "test_nargs_optional_metavar_stringz9TestAddArgumentMetavar.test_nargs_optional_metavar_string      !!S!9r   c                 :    | j                  dt                      y )Nr  r  r  r   s    r   #test_nargs_optional_metavar_length0z:TestAddArgumentMetavar.test_nargs_optional_metavar_length0      S%':r   c                 *    | j                  dd       y )Nr  r  r  r  r   s    r   #test_nargs_optional_metavar_length1z:TestAddArgumentMetavar.test_nargs_optional_metavar_length1      !!V!<r   c                 *    | j                  dd       y )Nr  r   r  r!  r   s    r   #test_nargs_optional_metavar_length2z:TestAddArgumentMetavar.test_nargs_optional_metavar_length2  s    S*=r   c                 *    | j                  dd       y )Nr  r  r  r!  r   s    r   #test_nargs_optional_metavar_length3z:TestAddArgumentMetavar.test_nargs_optional_metavar_length3      S/Br   c                 *    | j                  dd       y )Nr  r=  r  r  r   s    r   $test_nargs_zeroormore_metavar_stringz;TestAddArgumentMetavar.test_nargs_zeroormore_metavar_string  r'  r   c                 :    | j                  dt                      y )Nr  r  r  r   s    r   %test_nargs_zeroormore_metavar_length0z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length0  r*  r   c                 *    | j                  dd       y )Nr  r  r  r  r   s    r   %test_nargs_zeroormore_metavar_length1z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length1  r-  r   c                 *    | j                  dd       y )Nr  r   r  r  r   s    r   %test_nargs_zeroormore_metavar_length2z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length2      !!Z!@r   c                 *    | j                  dd       y )Nr  r  r  r!  r   s    r   %test_nargs_zeroormore_metavar_length3z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length3  r2  r   c                 *    | j                  dd       y )Nr  r=  r  r  r   s    r   #test_nargs_oneormore_metavar_stringz:TestAddArgumentMetavar.test_nargs_oneormore_metavar_string  r'  r   c                 :    | j                  dt                      y )Nr  r  r  r   s    r   $test_nargs_oneormore_metavar_length0z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length0  r*  r   c                 *    | j                  dd       y )Nr  r  r  r!  r   s    r   $test_nargs_oneormore_metavar_length1z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length1  s    S&9r   c                 *    | j                  dd       y )Nr  r   r  r  r   s    r   $test_nargs_oneormore_metavar_length2z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length2  r;  r   c                 *    | j                  dd       y )Nr  r  r  r!  r   s    r   $test_nargs_oneormore_metavar_length3z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length3  r2  r   c                 *    | j                  dd       y )Nr  r=  r  r  r   s    r   #test_nargs_remainder_metavar_stringz:TestAddArgumentMetavar.test_nargs_remainder_metavar_string  s    !!s!;r   c                 :    | j                  dt                      y )Nr  r  )r  r  r   s    r   $test_nargs_remainder_metavar_length0z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length0  s    !!uw!?r   c                 *    | j                  dd       y )Nr  r  r  r  r   s    r   $test_nargs_remainder_metavar_length1z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length1  s    !!v!>r   c                 *    | j                  dd       y )Nr  r   r  r  r   s    r   $test_nargs_remainder_metavar_length2z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length2  s    !!z!Br   c                 *    | j                  dd       y )Nr  r  r  r  r   s    r   $test_nargs_remainder_metavar_length3z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length3  s    !!!Gr   c                 *    | j                  dd       y )NA...r=  r  r  r   s    r    test_nargs_parser_metavar_stringz7TestAddArgumentMetavar.test_nargs_parser_metavar_string  s    !!!<r   c                 :    | j                  dt                      y )NrS  r  r  r   s    r   !test_nargs_parser_metavar_length0z8TestAddArgumentMetavar.test_nargs_parser_metavar_length0  s    VUW=r   c                 *    | j                  dd       y )NrS  r  r  r  r   s    r   !test_nargs_parser_metavar_length1z8TestAddArgumentMetavar.test_nargs_parser_metavar_length1  s    !!!?r   c                 *    | j                  dd       y )NrS  r   r  r!  r   s    r   !test_nargs_parser_metavar_length2z8TestAddArgumentMetavar.test_nargs_parser_metavar_length2  s    VZ@r   c                 *    | j                  dd       y )NrS  r  r  r!  r   s    r   !test_nargs_parser_metavar_length3z8TestAddArgumentMetavar.test_nargs_parser_metavar_length3  s    V_Er   c                 *    | j                  dd       y )Nrv  r=  r  r  r   s    r   test_nargs_1_metavar_stringz2TestAddArgumentMetavar.test_nargs_1_metavar_string      !!3!7r   c                 :    | j                  dt                      y )Nrv  r  r  r   s    r   test_nargs_1_metavar_length0z3TestAddArgumentMetavar.test_nargs_1_metavar_length0      Q8r   c                 *    | j                  dd       y )Nrv  r  r  r  r   s    r   test_nargs_1_metavar_length1z3TestAddArgumentMetavar.test_nargs_1_metavar_length1  s    !!6!:r   c                 *    | j                  dd       y )Nrv  r   r  r!  r   s    r   test_nargs_1_metavar_length2z3TestAddArgumentMetavar.test_nargs_1_metavar_length2      Q
;r   c                 *    | j                  dd       y )Nrv  r  r  r!  r   s    r   test_nargs_1_metavar_length3z3TestAddArgumentMetavar.test_nargs_1_metavar_length3      Q@r   c                 *    | j                  dd       y )Nr  r=  r  r  r   s    r   test_nargs_2_metavar_stringz2TestAddArgumentMetavar.test_nargs_2_metavar_string  r_  r   c                 :    | j                  dt                      y )Nr  r  r  r   s    r   test_nargs_2_metavar_length0z3TestAddArgumentMetavar.test_nargs_2_metavar_length0  rb  r   c                 *    | j                  dd       y )Nr  r  r  r!  r   s    r   test_nargs_2_metavar_length1z3TestAddArgumentMetavar.test_nargs_2_metavar_length1      Q7r   c                 *    | j                  dd       y )Nr  r   r  r  r   s    r   test_nargs_2_metavar_length2z3TestAddArgumentMetavar.test_nargs_2_metavar_length2  s    !!:!>r   c                 *    | j                  dd       y )Nr  r  r  r!  r   s    r   test_nargs_2_metavar_length3z3TestAddArgumentMetavar.test_nargs_2_metavar_length3  rj  r   c                 *    | j                  dd       y )Nr{  r=  r  r  r   s    r   test_nargs_3_metavar_stringz2TestAddArgumentMetavar.test_nargs_3_metavar_string  r_  r   c                 :    | j                  dt                      y )Nr{  r  r  r   s    r   test_nargs_3_metavar_length0z3TestAddArgumentMetavar.test_nargs_3_metavar_length0
  rb  r   c                 *    | j                  dd       y )Nr{  r  r  r!  r   s    r   test_nargs_3_metavar_length1z3TestAddArgumentMetavar.test_nargs_3_metavar_length1  rq  r   c                 *    | j                  dd       y )Nr{  r   r  r!  r   s    r   test_nargs_3_metavar_length2z3TestAddArgumentMetavar.test_nargs_3_metavar_length2  rg  r   c                 *    | j                  dd       y )Nr{  r  r  r  r   s    r   test_nargs_3_metavar_length3z3TestAddArgumentMetavar.test_nargs_3_metavar_length3  s    !!?!Cr   N)3r!   r"   r#   r  r  r  r  r  r  r"  r$  r&  r)  r,  r/  r1  r4  r6  r8  r:  r=  r?  rA  rC  rE  rG  rI  rK  rM  rO  rQ  rT  rV  rX  rZ  r\  r^  ra  rd  rf  ri  rl  rn  rp  rs  ru  rw  ry  r{  r}  r  rC   r   r   r  r  o  s   ECF;<>?D
:;=>C
:;=AC
:;:AC
<@?CH
=>@AF
89;<A
898?A
898<Dr   r  c                   ,    e Zd ZdZdZd Zd Zd Zd Zy)TestInvalidNargszinvalid nargs valueznargs for store actions must be != 0; if you have nothing to store, actions such as store true or store const may be more appropriatec                    t        j                         }| j                  t              5 }|j	                  d|       d d d        | j                  j                  j                  d   | j                         y # 1 sw Y   =xY wNr   rw  r   )	r-   r.   r   rC  r   r   r  rx   EXPECTED_RANGE_MESSAGEr   rx  r4   r  s       r   do_test_range_exceptionz(TestInvalidNargs.do_test_range_exception  sf    ((*z*bu5 +**1-t/J/JK +*   A::Bc                    t        j                         }| j                  t              5 }|j	                  d|       d d d        | j                  j                  j                  d   | j                         y # 1 sw Y   =xY wr  )	r-   r.   r   rC  r   r   r  rx   EXPECTED_INVALID_MESSAGEr  s       r   do_test_invalid_exceptionz*TestInvalidNargs.do_test_invalid_exception$  sf    ((*z*bu5 +**1-t/L/LM +*r  c                 L    | j                  d       | j                  d       y )Nr   rw  abcd)r  r   s    r   test_nargs_alphabeticz&TestInvalidNargs.test_nargs_alphabetic,  s$    &&S&1&&V&4r   c                 (    | j                  d       y )Nr   rw  )r  r   s    r   test_nargs_zeroz TestInvalidNargs.test_nargs_zero0  s    $$1$-r   N)	r!   r"   r#   r  r  r  r  r  r  rC   r   r   r  r    s'    4LLN5.r   r  c                       e Zd Zd Zd Zy)TestImportStarc                 l    t         j                  D ]!  }| j                  t        t         |             # y rQ   )r-   __all__r  r   r  s     r   rD  zTestImportStar.test9  s%    $$DOOGHd34 %r   c                 (   t        t              j                         D cg c]2  \  }}|j                  d      s|dk(  st	        j
                  |      s|4 }}}| j                  t        |      t        t        j                               y c c}}w )Nr   ngettext)	r   r-   r   
startswithinspectismoduler   r   r  )r   rf   rR  r   s       r   'test_all_exports_everything_but_modulesz6TestImportStar.test_all_exports_everything_but_modules=  s|      $H~335
5eOOC(DJ,>##E* 5 	 
 	x/?/?(@A
s   7BN)r!   r"   r#   rD  r  rC   r   r   r  r  7  s    5Br   r  c                   $     e Zd Z fdZd Z xZS )TestWrappingMetavarc                     t         |           t        d      | _        d}| j                  j	                  d|       y )N9this_is_spammy_prog_with_a_long_name_sorry_about_the_namez<http[s]://example:1234>z--proxyrz  )r   rM   r   r4   r   )r   r  r   s     r   rM   zTestWrappingMetavar.setUpI  s9    0G

 -  G <r   c                     | j                   j                         }| j                  |t        j                  d             y )Na              usage: this_is_spammy_prog_with_a_long_name_sorry_about_the_name
                   [-h] [--proxy <http[s]://example:1234>]

            options:
              -h, --help            show this help message and exit
              --proxy <http[s]://example:1234>
            )r4   r  r   r  r   )r   	help_texts     r   test_help_with_metavarz*TestWrappingMetavar.test_help_with_metavarS  s4    KK++-	HOO 5 % 	r   )r!   r"   r#   rM   r  r$   r%   s   @r   r  r  G  s    =	r   r  c                       e 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d Zd Zd Zy)TestExitOnErrorc                     t        j                  dd      | _        | j                  j                  ddt               y )NFr  )r!  r  z
--integersN)r  r   )r-   r.   r4   r   r  r   s    r   rM   zTestExitOnError.setUpa  s3    --EDGI  s Er   c                     | j                   j                  dj                               }| j                  |t	        j
                  d             y )Nz--integers 4r  )integers)r4   r=   r   r   r-   r"  r$  s     r   !test_exit_on_error_with_good_argsz1TestExitOnError.test_exit_on_error_with_good_argsf  s:    [[##N$8$8$:;X//;<r   c                     | j                  t        j                        5  | j                  j	                  dj                                d d d        y # 1 sw Y   y xY w)Nz--integers a)r   r-   r$  r4   r=   r   r   s    r    test_exit_on_error_with_bad_argsz0TestExitOnError.test_exit_on_error_with_bad_argsj  s=    x556KK"">#7#7#9: 766s   *AAc                     | j                  t        j                  d| j                  j                  dj                                y Nz!unrecognized arguments: --foo barr  )r#  r-   r$  r4   r=   r   r   s    r   test_unrecognized_argsz&TestExitOnError.test_unrecognized_argsn  s4    x55B#{{55{7H7H7J	Lr   c                     | j                  t        j                  d| j                  j                  dj                                y r  )r#  r-   r$  r4   r  r   r   s    r   !test_unrecognized_intermixed_argsz1TestExitOnError.test_unrecognized_intermixed_argss  s4    x55B#{{@@+BSBSBU	Wr   c                     | j                   j                  d       | j                   j                  d       | j                  t        j                  d| j                   j
                  g        y )NrE  rF  /the following arguments are required: bar, baz$r4   r   r#  r-   r$  r=   r   s    r   test_required_argsz"TestExitOnError.test_required_argsx  sN      '  'x55P#{{55r	;r   c                     | j                   j                  d       | j                   j                  dd       | j                  t        j                  d| j                   j
                  g        y )NrE  rF  BaZrz  z/the following arguments are required: bar, BaZ$r  r   s    r   test_required_args_with_metavarz/TestExitOnError.test_required_args_with_metavar  sS      '   6x55P#{{55r	;r   c                     | j                   j                  d       | j                   j                  dd       | j                  t        j                  d| j                   j
                  g        y )NrE  rF  r{  rw  r  r  r   s    r   test_required_args_nz$TestExitOnError.test_required_args_n  sS      '  a 0x55P#{{55r	;r   c                     | j                   j                  d       | j                   j                  ddd       | j                  t        j                  d| j                   j
                  g        y )NrE  rF  r{  )rC  r  r  r  z3the following arguments are required: bar, B, A, Z$r  r   s    r   !test_required_args_n_with_metavarz1TestExitOnError.test_required_args_n_with_metavar  sU      '  a Ix55T#{{55r	;r   c                     | j                   j                  d       | j                   j                  dd       | j                  t        j                  d| j                   j
                  g        y )NrE  rF  r  rw  *the following arguments are required: bar$r  r   s    r   test_required_args_optionalz+TestExitOnError.test_required_args_optional  S      '  c 2x55K#{{55r	;r   c                     | j                   j                  d       | j                   j                  dd       | j                  t        j                  d| j                   j
                  g        y )NrE  rF  r  rw  r  r  r   s    r   test_required_args_zero_or_morez/TestExitOnError.test_required_args_zero_or_more  r  r   c                     | j                   j                  d       | j                   j                  dd       | j                  t        j                  d| j                   j
                  g        y )NrE  rF  r  rw  r  r  r   s    r   test_required_args_one_or_morez.TestExitOnError.test_required_args_one_or_more  sS      '  c 2x55P#{{55r	;r   c                     | j                   j                  d       | j                   j                  ddd       | j                  t        j                  d| j                   j
                  g        y )NrE  rF  r  )BaZ1BaZ2r  z9the following arguments are required: bar, BaZ1\[, BaZ2]$r  r   s    r   +test_required_args_one_or_more_with_metavarz;TestExitOnError.test_required_args_one_or_more_with_metavar  sV      '  c;K Lx55[#{{55r	;r   c                     | j                   j                  d       | j                   j                  dd       | j                  t        j                  d| j                   j
                  g        y )NrE  rF  r  rw  r  r  r   s    r   test_required_args_remainderz,TestExitOnError.test_required_args_remainder  sS      '  e 4x55K#{{55r	;r   c                     | j                   j                  d      }|j                  d       |j                  d       | j                  t        j
                  d| j                   j                  g        y )NTr  r0  rf  z,one of the arguments --bar --baz is requiredr4   r;  r   r#  r-   r$  r=   r   r   s     r   %test_required_mutually_exclusive_argsz5TestExitOnError.test_required_mutually_exclusive_args  s]    88$8G7#7#x55M#{{55r	;r   c                 b   | j                   j                         }|j                  d       |j                  ddd       | j                  t        j
                  d| j                   j                  g d       | j                  t        j
                  d| j                   j                  g d	       y )
Nr0  rF  r  r  r  z.argument BaZ: not allowed with argument --bar$r0  r   r  z.argument --bar: not allowed with argument BaZ$r   r0  r  r  r  s     r   >test_conflicting_mutually_exclusive_args_optional_with_metavarzNTestExitOnError.test_conflicting_mutually_exclusive_args_optional_with_metavar  s    88:7#5U;x55O#{{557J	L 	x55O#{{557J	Lr   c                 b   | j                   j                         }|j                  d       |j                  ddd       | j                  t        j
                  d| j                   j                  g d       | j                  t        j
                  d| j                   j                  g d	       y )
Nr0  rF  r  )BAZ1r  z/argument BAZ1: not allowed with argument --bar$r  z/argument --bar: not allowed with argument BAZ1$r  r  r  s     r   Ctest_conflicting_mutually_exclusive_args_zero_or_more_with_metavar1zSTestExitOnError.test_conflicting_mutually_exclusive_args_zero_or_more_with_metavar1  s    88:7#5Y?x55P#{{557J	L 	x55P#{{557J	Lr   c                 b   | j                   j                         }|j                  d       |j                  ddd       | j                  t        j
                  d| j                   j                  g d       | j                  t        j
                  d| j                   j                  g d	       y )
Nr0  rF  r  )r  BAZ2r  z8argument BAZ1\[, BAZ2]: not allowed with argument --bar$r  z8argument --bar: not allowed with argument BAZ1\[, BAZ2]$r  r  r  s     r   Ctest_conflicting_mutually_exclusive_args_zero_or_more_with_metavar2zSTestExitOnError.test_conflicting_mutually_exclusive_args_zero_or_more_with_metavar2  s    88:7#55EFx55Z#{{557J	L 	x55Z#{{557J	Lr   c                 f   | j                   j                  d       | j                   j                  dd       | j                   j                  d       | j                  t        j                  d| j                   j
                  dg       | j                  t        j                  d| j                   j
                  d	g       | j                  t        j                  d
| j                   j
                  g d       | j                  t        j                  d| j                   j
                  g d       y )Nr  r  r   r  --fooglez7ambiguous option: --foob could match --foobaz, --foobler  z:ambiguous option: --foob=1 could match --foobaz, --fooble$--foob=1z8ambiguous option: --foob could match --foobaz, --fooble$)r  r=  r  r  )r  r  r  r  r   s    r   test_ambiguous_optionz%TestExitOnError.test_ambiguous_option  s      ,  L A  ,x55IKK""XJ	0 	x55LKK""ZL	2 	x55JKK""$D	F 	x55LKK""$A	Cr   c                     | j                   j                  d       | j                  t        j                  d| j                   j
                  dg       y )Nrp   z)No such file or directory: 'no-such-file'z@no-such-filer  r   s    r   test_os_errorzTestExitOnError.test_os_error  s@      (x55J#{{557H	Jr   N)r!   r"   r#   rM   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rC   r   r   r  r  _  sn    F
=;L
W
;;;;;;;;;;	L	L	LC"Jr   r  c                       e Zd Zd Zy)TestTranslationsc                 .    | j                  t               y rQ   )assertMsgidsEqualr-   r   s    r   test_translationsz"TestTranslations.test_translations  s    x(r   N)r!   r"   r#   r  rC   r   r   r  r    s    )r   r  c                  @    i t         _        t               t        _        y rQ   )r  r  r  r  rC   r   r   tearDownModuler    s    EJEJr   __main__rv  z--snapshot-update(   r/   r;   r  r   r  rU   ra   r_   r   r  rR   unittestr-   r  enumr   test.supportr   test.support.i18n_helperr   r   r   TextIOWrapperr	   rE   r'   skip_unless_working_chmodr   rO   rv   r}   r   r   r   r.   r   r   r   r   r   r   r   r  r  r$  r&  r,  r.  r<  r?  rH  rX  rZ  r_  re  rn  rs  ru  rz  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'  r+  r-  r0  r2  r4  r6  r8  r:  r?  rB  rD  rH  rT  rW  rZ  r\  r^  r`  rc  re  rg  ri  rk  rm  rp  rr  ru  rw  ry  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r+  	eq_stderrr  r1  
eq_bstderrr  r  r  r  r  skip_if_dac_overrider#  r-  r0  r3  r6  rA  rG  rM  r\  rc  rl  r  r  r  r$  r2  rn  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   r+  r-  rO  r]  r`  rb  rh  rl  rp  rv  rx  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  r  r  r  r  r  r  r  r+  r2  rC  r^  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!   lenr   r2   mainrC   r   r   <module>r     s      	  	   
       " W :""" :$FH%% F:x    $$D6 D %D.& ) )%) %# L>!8!8 >q9D q9f 		&'7Cn n 4. ^  ~ .
> 
n . $ &N & ( , .^  
 
	> 	 . .  .> &. "> "
N 
~ N N > > >@
 
	 		> 	 &^  ~  &N "~ "n "n &N &
 
@~ N N 	^ 		N 	N > . > >    ( "~   $  ~ n ^ N 	n 	^ N . , . ,> 
^ 
	N 	>  
. 
   ~ "> &~ &.    ^ 6. 2 (. **L. *Z\> DKx K0 h h , ,, W%h'	h'	n-	/
/
/F /"L. 03< 3"\> .'F '" L.   , L.   & \>     
] 
  
38 3$
 
$~ . ,> ,>8 >.>N >BJX J$~ [ [B!+H !+NJ J`@&x @&D1?f 1?h '8  F( (V7H B!'8 !H*( *Z''8 'T%7H %P' 'R/('8 /(d GX  F w  F (  Lf 	-	
	(	
	&	
	1	
	0	
	7	
	0	
	>	X0h X0|8X 8."( "&Q1$ Q1f 		*>5"E"l "H3B| 3Bl,< ,^ >1< 1h% %P3 3l6L 6r< ,\ >L :!| !H< 2# #L< D!L !H\ 4| 0+ +\\ "
< 
L *| (L 4 *| (< *\ .< 0< 6\ 8.l .b-\ -`0| 0dL (L 2 :' 'V< :% %XIh IJ-( -<3E8 3EtEQh EQXC/( C/R7H 7J-8 -$* *.H .$65h 65z
88 
8 +(h +(b*) *)Z|LX |LFX/ X/v) )0eDX eDP.x .@BX B ( 0VJh VJz)+ ) z
388}qSXXa[,??$X.HMMO r   