
    z%i                       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  G d dej"                        Z G d dej&                        Z G d d	ej&                        Zej*                   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j:                        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"      Z+ G d* d+e"      Z, G d, d-e"      Z- G d. d/e"      Z. G d0 d1e"      Z/ G d2 d3e"      Z0 G d4 d5e"      Z1 G d6 d7e"      Z2 G d8 d9e"      Z3 G d: d;e"      Z4 G d< d=e"      Z5 G d> d?e"      Z6 G d@ dAe"      Z7 G dB dCe"      Z8 G dD dEe"      Z9 G dF dGe"      Z: G dH dIe"      Z; G dJ dKe"      Z< G dL dMe"      Z= G dN dOe"      Z> G dP dQe"      Z? G dR dSe"      Z@ G dT dUe"      ZA G dV dWe"      ZB G dX dYe"      ZC G dZ d[e"      ZD G d\ d]e"      ZE G d^ d_e"      ZF G d` dae"      ZG G db dce"      ZH G dd dee"      ZI G df dge"      ZJ G dh die"      ZK G dj dke"      ZL G dl dme"      ZM G dn doe"      ZN G dp dqe"      ZO G dr dse"      ZP G dt due"      ZQ G dv dwe"      ZR G dx dye"      ZS G dz d{e"      ZT G d| d}e"      ZU G d~ de"      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"      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e"      Zw G d dee"      Zx G dĄ de      Zy e       Zz e       Z{ G dƄ dǫ      Z| e|dȫ      Z} e|dɫ      Z~ e|dʫ      Z e|d˫      Z e|d̫      Z e|dͫ      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 de      Z G d dee      Z G d dee      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 d$ d%e      Z G d& d'e      ZefZ! ed(e!i       Z G d) d*e      Z G d+ d,e      Z G d- d.e      Z G d/ d0e      Z G d1 d2e      Z G d3 d4e      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d Zedk(  r ej                          yy(      N)	os_helper)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      F/home/uftp/.pyenv/versions/3.12.0/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*   sg    ((*&&t,	1JJ+,	1 KKq%K0		1 	1 	1 	1 	1 	1s#   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   r-   r   r.   assertRegexr   )r   r1   r5   mocked_stderrs       r   test_skip_invalid_stdoutz&StdStreamTest.test_skip_invalid_stdout2   s7   ((*f//$8
 	FD $'	F**40	F 		F "/**=9	F 

/0	F   !7!7!99E	F 	F 	F 	F 	F 	F	F
	F 	F 	F 	F 	F 	F 	F 	F 	F 	F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    r2   r?    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.setUpG   s&     	 = = ?@Ir   N)r   r   r    rJ   r@   r   r   rB   rB   E   s    r   rB   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   rJ   zTempDirMixin.setUpR   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)rR   rU   rT   walkrQ   chmodpathjoinstatS_IWRITEshutilrmtree)r   rootdirsfilesnames        r   tearDownzTempDirMixin.tearDownW   s    
!#!F 	KD$ KdmmT:DMMJK	K 	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)rR   rZ   r[   rQ   openwrite)r   filename	file_pathfiles       r   create_writable_filez!TempDirMixin.create_writable_file^   sP    GGLL9	)S73 	!tJJx 	!	!s   AAc                 j    t        j                  | j                  |      t        j                         y rN   )rR   rY   rn   r\   S_IREAD)r   rk   s     r   create_readonly_filez!TempDirMixin.create_readonly_filed   s    
**84dllCr   N)r   r   r    rJ   rd   rn   rq   r@   r   r   rL   rL   O   s     
+Dr   rL   c                       e Zd Zd Zy)Sigc                      || _         || _        y rN   )argskwargsr   ru   rv   s      r   r   zSig.__init__i   s    	r   Nr   r   r    r   r@   r   r   rs   rs   g   s    r   rs   c                       e Zd Zd Zd Zd Zy)NSc                 :    | j                   j                  |       y rN   )__dict__update)r   rv   s     r   r   zNS.__init__p   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__s   sQ    dmm1134IIEw}EF	:..	:: Fs   A!c                 0    t        |       t        |      k(  S rN   )varsr   others     r   __eq__z	NS.__eq__x   s    DzT%[((r   N)r   r   r    r   r   r   r@   r   r   rz   rz   n   s    %;
)r   rz   c                       e Zd ZddZy)ArgumentParserErrorNc                 l    t         j                  | |||       || _        || _        || _        || _        y rN   )	Exceptionr   r)   stdoutstderr
error_code)r   r)   r   r   r   s        r   r   zArgumentParserError.__init__~   s2    4&&9$r   )NNNrx   r@   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:   ru   rv   
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 rN   )r   r   r:   r   )r   ru   rv   r:   r   s       r   r:   z%ErrorRaisingArgumentParser.parse_args   s%    5tG
%jB4B6BBr   c                 >    t         t        | 
  }t        |g|i |S rN   )r   r   r/   r   )r   ru   rv   r/   r   s       r   r/   zErrorRaisingArgumentParser.exit   s%    /;%d<T<V<<r   c                 >    t         t        | 
  }t        |g|i |S rN   )r   r   errorr   )r   ru   rv   r   r   s       r   r   z ErrorRaisingArgumentParser.error   s%    0$=%e=d=f==r   )r   r   r    r:   r/   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 rN   )add_argumentru   rv   )r1   argument_signaturessigs      r   	no_groupsz1ParserTesterMetaclass.__init__.<locals>.no_groups   s1    :* =###SXX<<=r   c                     	 | j                  d      }|D ](  } |j                  |j                  i |j                   * y )Nr'   )add_argument_groupr   ru   rv   )r1   r   groupr   s       r   	one_groupz1ParserTesterMetaclass.__init__.<locals>.one_group   sA    F--e4E* <"""CHH;

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

;<r   c                 &    	 | j                  |      S rN   )r:   )r1   ru   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:   )r1   ru   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 rN   r@   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!J <I ) 2 2I%'9?JE #I09 (+4( J	7;< % s   >B	B! B!c                     |j                   j                  }|j                   j                  } |j                  |i |}| j	                  ||j
                         |S rN   )r   ru   rv   r   r   r   )r   testerru   rv   r1   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                     | j                  |      }|j                  D ]C  }|j                         }|j                  t        |      5  |j                  |       d d d        E y # 1 sw Y   PxY w)N)msg)r   failuressplitassertRaisesr   r:   )r   r   r1   args_strru   s        r   r   z>ParserTesterMetaclass.__init__.<locals>.AddTests.test_failures  sm    ))&1 & 0H#>>+D,,-@d,K 0))$/0 000 0s   A%%A.	c                     | j                  |      }|j                  D ]I  \  }}t        |t              r|j	                         }| j                  ||      }|j                  ||       K y rN   )r   	successesr   strr   r   assertEqual)r   r   r1   ru   expected_ns	result_nss         r   r   z?ParserTesterMetaclass.__init__.<locals>.AddTests.test_successes  sc    ))&1)/)9)9 ?%D+!$,#zz| $ 0 0 >I&&{I>	?r   N)r   r   r    r   r   r   r   r@   r   r   AddTestsr      s    <&0?r   r   )hasattrrs   r   r   r   object)clsrc   basesbodydictr   r   r   r   r   r   r   r:   s               r   r   zParserTesterMetaclass.__init__   s    ## s./#&5C sN+9C
	=
	<	<	+	()	?v )	?Z (K@ 	9M'1 9
mZ89	9r   Nrx   r@   r   r   r   r      s    _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    rs   r   r   rz   r   r@   r   r   r   r   3  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   r@   r   r   r   r   A  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   r@   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   r@   r   r   r  r  i  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                       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gZy) TestOptionalsSingleDashAmbiguousr  r  )r  r  r  r  r  r  r  r   N)r  r  z-foob ar   z-foor az-fooba az-foora ar  r  r   r@   r   r   r   r   y  s    Ay>3y>:EH	RtD)*	Bc$/0	Bd3/0	Rs401	RtC01	bD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   r@   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   r@   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   r@   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   r.  )r,  r-  r.  r/  r0  r   FN)r1  baz--ba Xr3  z--ba=Xr4  Tr5  r6  r   r@   r   r   r8  r8    s    I 	J|,F >H	Ru&'	2Us+,	2Us+,	"DT*+	2Td+,	Bdt,-	Rt-.Ir   r8  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   r,  -bazr   r   r  )r,  -fbarz-fbazz-bazf-b BBr   FNr  barbazTz--ba Br?  z
-f --bar Bz-f -bz-ba -fr   r@   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  )r,  r=  r>  r?  r  --bar Br<  r4   --helpz+hz::helpz/helpr   Nr@  T::ba Br?  
+f ::bar B+f /b/ba +f	r   r   r    rs   r   r   r   rz   r   r@   r   r   rD  rD    s    C>D&GF=3
 qH	R%Tt,-	rDd-.	23D12	rDct45	"t2./	2$B/0Ir   rD  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)*TestOptionalsAlternatePrefixCharsAddedHelprE  TrF  rI  r   r   rJ  rK  r   r   r  )r,  r=  r>  r?  r  rL  r<  r   FNr@  rN  r?  rO  rP  rQ  rR  r@   r   r   rT  rT    s    + =D&GF=3
 HH	R%Tt,-	rDd-.	23D12	rDct45	"t2./	2$B/0Ir   rT  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+-FrF  r   r   r   z+yz+z)-wz-xyzz+xr  z+xyzr   r   yr  Tz+y -xz+yz -xNrR  r@   r   r   rV  rV    s    Ju=D&D&D&
H 
R%5E*+	rDEU+,	"ttu-.	2-.	Ir   rV  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-vz	--verbosez-nz--noisyr   r   )z--x --verbosez-Nr   z-v xr   F)verboseTNr   r@   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_barra  z--baz ggz--foo-bar h --baz ihr   z--baz j --foo-bar kkjr   r@   r   r   r_  r_  -  sf    4{+Sx-HIuH	3t45	BtC01	3s ;<	3s ;<	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gZy)TestOptionalsDefaultr   r  r   defaultr   r   Nr   rY  z-xxr   z-yyrY  r   r@   r   r   rh  rh  :  sU    4t9c$&;<uH	R$"	SB 	TS!"Ir   rh  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   r@   r   r   rm  rm  F  s9    At9+T{H	R$Z	cIr   rm  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   r@   r   r   ro  ro  Q  s?    0t1-.T{H	R$Z	seIr   ro  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      rq  )r   r   r   -x a ba -xa -x br   Nr   z-x a b cr   bcr   r@   r   r   rt  rt  \  s:    1t1-.>H	R$Z	R/*+Ir   rt  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)TestOptionalsNargsOptionalrW  ?rq  r   r   )rr  r  r  spamrr  rj  r  4284)rr  r   r  rj  2r   NT   rf   r   rY  r  z-w 2z-x 2z-y 2z-z 2   	r   r   r    rs   intr   r   rz   r   r@   r   r   r}  r}  g  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   *rq  r  r  r  r   r   Nrk  r   rv  rz  -y a-y a br   r@   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   +rq  r  r  r  )r   r   r  rw  za -y br   Nrk  r   r   rv  rz  r  r  r   r@   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-fadz-gaz-g 6r   N)r  rc  r  r   z-f cr{  z-g 0r   z-g 03ru  z-fb -g4rz     
r   r   r    rs   r  ranger   r   rz   r   r@   r   r   r  r    s    6 	D% DsE!H-/ 4H	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 1rp  r   z-x42r   Nr  r@   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   rw  r   Nr   z-xfoor'   r   r@   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rY  )	r   r   r    rs   r   r   r   rz   r   r@   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   r@   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   r@   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   r1   cms      r   
test_constz$TestBooleanOptionalAction.test_const  sn    ((*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  r@   )r*   r+   assertWarnsDeprecationWarningr   r  boolr0   s     r   test_deprecated_init_kwz1TestBooleanOptionalAction.test_deprecated_init_kw   s   ((*01 	55   	 01 	55   	 01 	55   	 01 	55   	 01 	55   	 01 	55   	 	A	 		 		 		 		 		 	sG   #F*'F'.#F4.#G .#G.#GF$'F14F= G	GG!)r   r   r    rs   r*   r  r   r   rz   r   r  r  r@   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    rs   r*   r  r   r   rz   r   r@   r   r   r  r  +  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)TestOptionalsActionAppendr`  appendr   r   r`  a --baz	--baz a br   NrB  --baz ar   --baz a --baz brz  r   r@   r   r   r  r  7  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)$TestOptionalsActionAppendWithDefaultr`  r  r3  r   rj  r  r   r  r  r   r  )r3  r   rz  Nr   r@   r   r   r  r  C  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   r,  )z-f vr  r  r   N)r  r'   rz  rA  r   r@   r   r   r  r  O  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  rz  r   r%  r   r  za -cz-bxz-b xr   Nrz  -b -cx -b -cyzr   yz	r   r   r    rs   r   r   r   rz   r   r@   r   r   r  r  b  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  r3  )r   r  rj  r  r  rz  r  r  r   r  r  r   r  Nr  r@   r   r   r  r  q  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   rp  r   r@   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gZy	)"TestOptionalsAllowLongAbbreviationr   z--foobazz--foobler   r   z--foob 5z--foobr   NF)r'   foobazfooblez--foo 77z	--fooba ar   z--foobl --foo grc  Tr   r@   r   r   r  r    s~    < 	GJJ|,
 H%H	RDe45	B3tE:;	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   z--foodler   r   z--foonly)z-foon 3z--foon 3z--foodz--food --foo 2r   Nr'   foodlefoonlyz--foo 33z--foonly 7 --foodle --foo 2r  Tr  rR  r@   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rG  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  rR  r@   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      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-ccrccrR  r@   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+ccrccrR  r@   r   r   r  r    s    O%@D	D! gH	R$$ 	SD!"	dd#$	TQ 	BN#	2?#Ir   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   r@   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'   rp  rq  r  r   r  Nr   r@   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  rq  )r   r   r   a b cr  r   rz  r  Nr   r@   r   r   r  r    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  rq  r   r   r  r   r  rz  Nr   r@   r   r   r  r    sN    :uC01vH	RBZ	bcUm	Sz"#Ir   r  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  rA  r  r   r   r  r   r  rz  Nr   r@   r   r   r  r    sP    HuC?@vH	RE]	bcUm	Sz"#Ir   r  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  rq  r   r   r   r  r  rz  Nr   r@   r   r   r  r    sD    <uC01DzH	bcUm	Sz"#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)
TestPositionalsNargsOptionalr'   r~  rq  r   r  r   Nr  r   r   r@   r   r   r
  r
  )  s=    &uC01e}H	RD\	bSkIr   r
  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   r@   r   r   r  r  4  s?    ;uC<=e}H	RBZ	bSkIr   r  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  )rr  r   rj  )r   r  1 2r   r   r  1rp  Nr  r@   r   r   r  r  ?  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'   rA  )r   r   r   r  r  r   rz  r'   rA  Nr   r@   r   r   r  r  N  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'   rA  rp  rq  )r   r   r   r  r  r   rz  r  Nr   r@   r   r   r  r  X  s8    @u:s5':;*H	s&'Ir   r  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  rq  rA  r   r   r   r  a b c dr  r   rz  r{  r  Nr   r@   r   r   r  r  b  s:    BuA.E
;3H	"#s-.Ir   r  c                       e Zd Z	  ed       edd      gZddgZd edg       fd	 edd
g      fd edd
dg      fgZy)"TestPositionalsNargsNoneZeroOrMorer'   rA  r  rq  r   r   r   r  r  rz  r  r{  Nr   r@   r   r   r  r  l  s^    Hu:s5'<=G}H	bSb!"	s&'	"3*-.Ir   r  c                   p    e Zd Z	  ed       edd      gZg dZd eddg	      fd
 edddg	      fgZy)!TestPositionalsNargsNoneOneOrMorer'   rA  r  rq  r   r   r   r  r   rz  r  r  r{  Nr   r@   r   r   r  r  x  sK    Ju:s5'<=!H	s&'	"3*-.Ir   r  c                   j    e Zd Z	  ed       edd      gZg dZd edd      fd	 edd
      fgZy) TestPositionalsNargsNoneOptionalr'   rA  r~  rq  r   r   r  r   Nr  r  rz  r   r@   r   r   r   r     sE    Ju:s5'<=%H	bSd#$	s$%Ir   r   c                       e Zd Z	  edd       ed      gZddgZd eg d      fd	 edgd
      fd edd
gd      fgZy)"TestPositionalsNargsZeroOrMoreNoner'   r  rq  rA  r   r   r   r  r  rz  r  r{  Nr   r@   r   r   r#  r#    s^    JuC0#e*=G}H	bRS!"	u#&'	"#s-.Ir   r#  c                   p    e Zd Z	  edd       ed      gZg dZd edgd	      fd
 eddgd	      fgZy)!TestPositionalsNargsOneOrMoreNoner'   r  rq  rA  r  r  r   rz  r  r  r{  Nr   r@   r   r   r%  r%    sK    LuC0#e*=!H	u#&'	"#s-.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  rA  r!  r   r  r  rz  Nr   r@   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  rq  rA  r  r  r  r   rz  r  r  r{  Nr   r@   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  rq  rA  r  )r   r   r   r  r  r   rz  r{  r  Nr   r@   r   r   r+  r+    s?    IuA.E0EF(H	"#s#/0Ir   r+  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  rq  rA  r~  )r   r   r   r  r  r   rz  Nr  r  r{  r   r@   r   r   r-  r-    sP    AuA.E0EF,H	Szt,-	"#s-.Ir   r-  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  rq  rA  rp  r   r   r   r  r  rz  r  r{  Nr   r@   r   r   r/  r/    sg    GuC0#e12EFGH	bRcU#$	u3%()	"#s#/0Ir   r/  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  rq  rA  rp  r  r  r   rz  r  r  r{  Nr   r@   r   r   r1  r1    sR    IuC0#e12EF!H	u3%()	"#s#/0Ir   r1  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~  rq  rA  rp  r!  r   Nr  r  rz  r   r@   r   r   r3  r3    sL    IuC0#e12EF%H	bTu%&	s&'Ir   r3  c                       e Zd Z	  ed       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)#TestPositionalsNargsNoneZeroOrMore1r'   rA  r  rq  rB  rp  r  r  r   rz  r'   rA  rB  r  r{  Nr   r@   r   r   r5  r5    s`    G 	E
EE
 "H	s./	"3%cU34Ir   r5  c                       e Zd Z	  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gZy)"TestPositionalsNargsNoneOneOrMore1r'   rA  r  rq  rB  rp  )r   r   r   rz  r  r   rz  r{  r6  r  r  Nr   r@   r   r   r8  r8    sd    I 	E
EE
 'H	"3%cU34	B3S#JSE:;Ir   r8  c                       e Zd Z	  ed       eddd       edd      gZg d	Zd
 edddg      fd edddg      fgZy)!TestPositionalsNargsNoneOptional1r'   rA  r~        ?r  rB  rp  rq  r  r  r   rz  r6  r  r{  Nr   r@   r   r   r:  r:    s`    E 	E
Ee,E
 "H	sC512	"#C512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gZy
)$TestPositionalsNargsOptionalOptionalr'   r~  rq  rA  r   r  r   r  r   Nr  r   r  rz  r   r@   r   r   r=  r=    se    ! 	EEb) !H	RDb!"	bSb!"	s$%Ir   r=  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~  rq  rA  r  r   r   Nr  r   r  rz  r  r{  r   r@   r   r   r?  r?  .  sn    ;uC0#e32GHyH	RDb!"	bSb!"	s&'	"3*-.	Ir   r?  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~  rq  rA  r  r   r   r   Nr  r  rz  r  r{  r   r@   r   r   rA  rA  ;  sc    =uC0#e32GHG}H	bTu%&	s&'	"3*-.Ir   rA  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   rd  r  efr   r  rc  N)	r   r   r    rs   setr   r   rz   r   r@   r   r   rC  rC  G  s=    0vs9~>?-H	bcl	bclIr   rC  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  rE  4r  rG  15   Nr  r@   r   r   rJ  rJ  R  s?    'vCrCD-H	baj	rr{Ir   rJ  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   rr  r  r  r   rz  r{  rG  Nr   r@   r   r   rP  rP  ]  sI    " 	F8$F81- 4H	"3c
+,-Ir   rP  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~  rq  z-4rY  r   r%  r   r&  z-315r   NFrk  r   Tz-4 ar   r@   r   r   rR  rR  m  ss    E 	CsDs<0 f~H	R$% !	b3% !	rDD!"	cT"#	Ir   rR  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~  rq  z-k4rY  r   rS  z-k3r   NFrk  r&  r   Tz-k4 ar   r@   r   r   rU  rU  }  s    L 	CsEL1 wH	R$% !	rDE"#	b3% !	TT"#	"sd#$Ir   rU  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~  rq  r  z--yyyrY  r$  r   Nrk  za badgerz	-a badgerz--yyy=a badgerz--yyy=-a badgerr   r@   r   r   rW  rW    s     	CsD'$ vH
rB$ 
rJ$/0
[D12
R$"%&

	R$*56
	b4;78
	R$*56
	b4;78	Ir   rW  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-+rG  -r   r~  r1  )r%  rr  r  r  rY  r   )r%  r   rj  z-+-r  r   rS  r  z+ -r   NFrX  z- Xr3  z+ -3Tz- ===z===)
r   r   r    rs   r   r  r   r   rz   r   r@   r   r   rY  rY    s    -CcH5CcR0EL1
 e}H	R$"&'	b8rU+,	SB%()	dbE*+	TR4()	"ue,-Ir   rY  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  rq  rY  r   Nrk  r   r   z	-x a -- brz  rw  rx  r   r@   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g dd	      fd edddgd	      fgZy)TestNargsRemainderr   rY  ...rq  r  )r   r  z-z Zr3  NrX  z-z Z XZ
X A B -z Z)Ar?  r  rb  z	X Y --fooYr   r   r@   r   r   r`  r`    sv    <s8SE%:CIF!H	b3"%&	2rS)*	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-3rY  )r   r%  r  r  rq  )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   NrX  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    rs   floatr   r   rz   r   r@   r   r   rg  rg    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   rg  c                      e Zd Z	  eddej
                         eddej
                         eddej
                        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)TestDefaultSuppressr'   r~  r  rA  r  r`  r   r  r   r   r   r  r  rz  r  Tr  r  r'   rB  r  r6  N)
r   r   r    rs   r*   SUPPRESSr   r   rz   r   r@   r   r   rm  rm    s    / 	Eh&7&78Eh&7&78GL(2C2CD
 vH	RT
	bSk	s&'	",	B3D)*	bSse67Ir   rm  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~  rq  rA  r  r`  r   r   r   r   r   r  r  rz  r  Tr  r  rn  r  r6  N)r   r   r    rs   r*   ro  r   r   r   rz   r   r@   r   r   rq  rq    s    >H,=,=>EEGL)
 vH	RT
	bSk	s&'	",	B3D)*	bSse67Ir   rq  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   rr  	--versionversion1.0r   rw  r'   r~  rq  rA  r  r`  r   r   r   r   )r'   rA  rB  rw  r   r  rz  Tr  r  NrR  r@   r   r   ru  ru    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   ru  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{  rJ   rR   fsencoder}  r  ri   rj   r   
file_textsrZ   textrm   r   s        r   rJ   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   rY  r  rq  )r   r  r3  z@invalidz@missingzhello world!zX YNr3  re  )r   r   rY  z
X -a A Y Zrd  rb  @hello XzX @helloz-a B @recursive Y ZzX @recursive Z -a Br?  )r  r   r3  re  r      @z@undecodable XzX @undecodabler   )r   r   r    rJ   rs   r   r   r   r   FS_NONASCIIr}  rz   r   TESTFN_UNDECODABLElstripr  rR   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  rJ   ri   rj   r  s        r   rJ   z$TestArgumentsFromFileConverter.setUpX  sb    ,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rN   )r   strip)r   arg_lineargs      r   convert_arg_line_to_argszWTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_argsc  s-     ~~' yy{	s   ,.N)r   r   r    r  r@   r   r   FromFileConverterArgumentParserr  a  s    	r   r  r  r  rY  r  rq  r  )r}  zworld!r3  r  )r   r   r    rJ   r   r  r   rs   r   r   r   rz   r   r!   r"   s   @r   r  r  U  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_ry  s&      %$t*5r   c                 f    t        j                  dd      }| j                  dt        |             y )Nr  rp  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_1rg   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 )Nrf   big5ignore)rh   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  rp  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  r@   r   r   r  r  w  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rN   )r   r   AttributeErrorr  r   s     r   r   zStdStreamComparer.__eq__  s9    	,DLL--- 	,DOO++	,s    55Nr   r   r    r   r   r@   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 rN   rc   r   rc   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   rc   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   r@   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  rf   r   rg   readonly)
r   r  rJ   ri   rR   rZ   r[   rQ   rj   rq   r   	file_namerm   r   s      r   rJ   zTestFileTypeR.setUp  sz    mT(*' 	&Ibggll4==)<G- &04

9%& &	& 	!!*-& &s   A==B	r   rh  r  r  )r   r   znon-existent-file.txtr'   Nr   r  
-x foo barrA  
bar -x foo-x - -r  )r   r   r    rJ   rs   r*   r  r   r   rz   r  eq_stdinr   r!   r"   s   @r   r  r    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goodrf   r   rg   )
r   r  rJ   ri   rR   rZ   r[   rQ   rj   r  )r   rm   r   s     r   rJ   zTestFileTypeDefaults.setUp  sG    "D/1BGGLL7wO

6

r   r  r  zno-file.txtr   rj  r   z-c goodr  )r{  )r   r   r    rJ   rs   r*   r  r   r   rz   r  r   r!   r"   s   @r   r  r    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  rf   r   rg   )	r   r  rJ   ri   rR   rZ   r[   rQ   rj   r  s      r   rJ   zTestFileTypeRB.setUp  sj    nd)+' 	&Ibggll4==)<G- &04

9%& &	&& &s   A,,A5	r   rbrh  r  r   r'   Nr  r  rA  r  r  )r   r   r    rJ   rs   r*   r  r   r   rz   r  	eq_bstdinr   r!   r"   s   @r   r  r    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 rN   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.rz  r  )r  moder
   rj   r  addrc   r  s      r   r   zWFile.__eq__  se    		!1Dejj {{7+KKKKMIIMM% yyEJJ&&r   N)r   r   r    rH  r  r   r   r@   r   r   r  r    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   rJ   rq   rn   r   r   s    r   rJ   zTestFileTypeW.setUp  (    !!*-!!*-r   r   rf   rh  r  )r   r   r  r'   Nr  r  r  rA  r  r  r   r   r    rJ   rs   r*   r  r   r   rz   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   rJ   zTestFileTypeX.setUp.  r  r   r   r   rh  r  )r   r   r  r  r  r'   rA  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  rh  r  r   r'   Nr  r  rA  r  r  )r   r   r    rs   r*   r  r   r   rz   r  
eq_bstdoutr   r@   r   r   r  r  >  s    I 	D(x((./F***401 bzH	Te-.	rE%LuU|<=	rE%LuU|<=	2
45	Ir   r  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   xbrh  r  r  r'   rA  r  r  N)r   r   r    rs   r*   r  r   rz   r  r  r   r@   r   r   r  r  O  sn    N 	D(x((./F***401
 
rE%LuU|<=	2
45Ir   r  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  NNrf   rp  )rf   rp  NNr  r  )rf   r  Nr  r  r  rg   )r  r  r  Nr   l1strict)rf   r   r  r  zbuiltins.openr'   )r*   r  r   r.   assert_called_with)r   FTcasesmr   ru   s         r   test_open_argsz#TestFileTypeOpenArgs.test_open_args`  s    X-.QZ-.I&(BCv&(@AQh')AB
 ZZ( 	3A# 3
dU$$$U2T23	3 	3 	3s   &BBN)r   r   r    r  r@   r   r   r  r  ]  s
    :3r   r  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   rh  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.testu  sx    ((*z* 	>b8+<+<=	> 	  #	
	> 	>s   "BBNr   r   r    r  r@   r   r   r  r  o  s    
	
r   r  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--eggsrh  r  )r   42jz--eggs az	--eggs 2iz--eggs=42 42r   g      E@)eggsr  z--eggs 2j -- -1.5y               @      z1024.675Ng3333@)
r   r   r    rs   complexrk  r   r   rz   r   r@   r   r   r
  r
    s^    6 	H7#F 5H	$/0	bbt45	RT12Ir   r
  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 rN   valuer   r  s     r   r   z#TestTypeUserDefined.MyType.__init__  	    DJr   c                 `    t        |       | j                  ft        |      |j                  fk(  S rN   r   r  r   s     r   r   z!TestTypeUserDefined.MyType.__eq__  '    J

+UU[[/IIIr   Nr  r@   r   r   MyTyper        		Jr   r  r   rh  r  rx  rz  r   r  -xf gr  rc  N)
r   r   r    rB   r  rs   r   r   rz   r   r@   r   r   r  r    sm    2J J 	DvF  H	2s&+67	"vc{56Ir   r  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 rN   r  r  s     r   r   zTestTypeClassicClass.C.__init__  r  r   c                 `    t        |       | j                  ft        |      |j                  fk(  S rN   r  r   s     r   r   zTestTypeClassicClass.C.__eq__  r  r   Nr  r@   r   r   Cr!    r  r   r$  r   rh  r  rx  rz  r   r  r  r  rc  N)	r   r   r    r$  rs   r   r   rz   r   r@   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}r@   strings    r   get_my_typez.TestTypeRegistration.test.<locals>.get_my_type  s     6))r   r   my_typer   rh  rY  r  z
my_type{1}rk  z-x 1 42zmy_type{42})r*   r+   registerr   r   r:   r   rz   )r   r+  r1   s      r   r  zTestTypeRegistration.test  s    	* ((*	;7Dy1Ci0**399;7dl3	5**9??+<=lm<	>r   Nr  r@   r   r   r&  r&    s
    4>r   r&  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      ?rG  )      ?r;  r  )       @r  	value: %szopt_action failed: %sr  )rz   r1  AssertionErrorr   r   r   r1   	namespacer  option_stringr   r   s          r   __call__z-TestActionUserDefined.OptionalAction.__call__  su    G !dmN*)*K&e^)+K&(u)<==
 Ivu- " G)*AA*EFFGs   2A 	AAArN   r   r   r    r;  r@   r   r   OptionalActionr1    s    	.r   r=  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  r1  )r   r  r3  )rp  r;  )r  r4  r6  zarg_action failed: %sr1  )rz   r  r7  r   r   r8  s          r   r;  z/TestActionUserDefined.PositionalAction.__call__  s    G !lH$'+K$c\',K$c\',K$(u)<==
 Ix/ " G)*AA*EFFGs   >A 	A*A%%A*rN   r<  r@   r   r   PositionalActionr?    s    	0r   rB  z-sr  r3  )r%  r   r   rj  r1  r~  r  )r   r   rr  rj  z-s0.125r4  )r  r1  r  r   z
-s 0.625 1r;  rp  z84 -s2r5  r  N)r   r   r    r*   Actionr=  rB  rs   rk  r  r   r   rz   r   r@   r   r   r/  r/    s    4. .,08?? 04 	Dvn	&H-C	, H	BE!,-	rtB'(	ruQ/0	23r*+	Ir   r/  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   r1   r9  valuesr:  s        r   r;  z(TestActionRegistration.MyAction.__call__  s    Ityy)f*<=r   rN   r<  r@   r   r   MyActionrG    s    	>r   rJ  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_actionr1  r   r  zfoo[1]rA  r  zfoo[42])r*   r+   r-  rJ  r   r   r:   rz   r0   s     r   r  zTestActionRegistration.test  s{    ((*+t}}=H[9**C512X3FG**D62Bi4HIr   N)r   r   r    r*   rC  rJ  r  r@   r   r   rE  rE    s    ?>8?? >
Jr   rE  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   rr  r   r@   z--foo f1 --foo f2 f3 f4)f1f2f3f4r  N)	r   r   r    rs   r   r   r   rz   r   r@   r   r   rN  rN  &  s4    GHCc: H	"B+C$DEIr   rN  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 xZS )TestAddSubparsersc                 8     | j                   t        g|i | y rN   r   r   rw   s      r   assertArgumentParserErrorz+TestAddSubparsers.assertArgumentParserError6      -???r   c                 T   |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                  d4i |}| j	                  |j                         t        d      }|rd|d<   |rddg|d<    |j                  d5i |}|j                  dt        d       |j                  dd d!"       t        d#      }	|rd$|	d<    |j                  d6i |	}
|
j                  d%d&d'"       |
j                  d(t        d)d*+       t        d,      }|rd-|d<    |j                  d7i |}|j                  d.t        d/       |j                  d0d1d23       |S )8NPROGmain description)progdescriptionrG  r   r  r'   r   foo helpr   helpr]  r^  r   rA  bar helpr   ra  r  FCOMMANDr  commandstitlecommand helpra  z1 descriptionr^  z1 help1alias11alias2aliasesrW  zw helpr   r  x helpr  ra  z2 descriptionz2 helpr  123y helpr  r  zz help)r   rr  ra  z3 descriptionz3 helptzt helpura  zu helprr  ra  r@   r  )r  )r  )	r   r   rk  add_subparsersrX  dict
add_parserr  r  )r   subparser_helprG  rl  r1   subparsers_kwargs
subparsersparser1_kwargsparser1parser2_kwargsparser2parser3_kwargsparser3s                r   r   zTestAddSubparsers._get_parser9  s    /);,XFQ!#e+Lz   S 0);=F:   ?J 	 	0 (/+4i()3g&(6f%*V**?->?
&&v'<'<= /:%-N6")2I(>N9%'*''>~>T(;S%h? /:%-N6"'*''>~>T5x@SwcI /:%-N6"'*''>~>Ss:SH= r   c                 z    t         |           | j                         | _        | j                  d      | _        y )NT)rx  )r   rJ   r   r1   command_help_parserr  s    r   rJ   zTestAddSubparsers.setUpp  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   rX  r1   r:   )r   r   ru   s      r   test_parse_args_failuresz*TestAddSubparsers.test_parse_args_failuresu  s;    1 	IH>>#D**4;;+A+A4H	Ir   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 7Frj     rz  r'   rA  rf   r   z0.25 --foo 2 -y 2 3j -- -1jTr3  r  y              @y             )r'   rA  rY  r  z--foo 0.125 1 cr4  r{  z-1.5 3 11 -- a --foo 7 -- br     )r   r   r  --rz  )r'   rA  rq  rr  )r   r1   r:   r   rz   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  Frj  r  rz  r  z0.5 -p 1 b -w 7-pz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-Xre  rb  )r   r1   parse_known_argsr   rz   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               }|j                  dd       |j                  d      }|j                  d      }|j                  d       | j	                  t        ddd	
      |j                  dj                                      y )Nr   r   r   rA  r$  r  rB  Fr  r6  r  )r   r   ru  rw  r   rz   r:   r   )r   r1   rz  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runr@   )r:   r   commandrX  )r   r1   rets      r   _test_required_subparsersz+TestAddSubparsers._test_required_subparsers  s@    (e, 	&&v'8'8"=r   c                     t               }|j                  d      }d|_        |j                  d       | j	                  |       y )Nr  r$  Tr  )r   ru  r  rw  r  r   r1   rz  s      r   &test_required_subparsers_via_attributez8TestAddSubparsers.test_required_subparsers_via_attribute  sA    +-**	*:
"
e$&&v.r   c                     t               }|j                  dd      }|j                  d       | j                  |       y )Nr  Tr%  r  r  )r   ru  rw  r  r  s      r   "test_required_subparsers_via_kwargz4TestAddSubparsers.test_required_subparsers_via_kwarg  s;    +-**	D*I
e$&&v.r   c                     t               }|j                  d      }|j                  d       |j                  d      }| j	                  |j
                         y )Nr  r$  r  r@   r   ru  rw  r:   assertIsNoner  r   r1   rz  r  s       r    test_required_subparsers_defaultz2TestAddSubparsers.test_required_subparsers_default  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'   rA  r@   z8error: the following arguments are required: {foo,bar}
$	r   ru  rw  r   r   r:   r=   r  r   r   r1   rz  excinfos       r   -test_required_subparsers_no_destination_errorz?TestAddSubparsers.test_required_subparsers_no_destination_error  s    +-**D*9
e$e$23 	"wb!	"$$G	
	" 	"   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'   rA  r  zPerror: 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3 	(wh'	($$_	
	( 	(r  c                     t               }|j                  dd      }|j                  d       |j                  d      }| j	                  |j
                         y )Nr  Fr  r  r@   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   r1   format_usageformat_help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+:-rZ  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  r0   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\  rb  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  r0   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\  rb  r'   z    ra  z            usage: PROG [-h] foo

            main description

            positional arguments:
              foo         

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

            main description

            positional arguments:
              {}          

            options:
              -h, --help  show this help message and exit
        r  r0   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 )NrE  rZ  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  r0   s     r    test_help_alternate_prefix_charsz2TestAddSubparsers.test_help_alternate_prefix_charsC	  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_helpU	  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\  rb  r   r   r_  r`  rA  rc  r  subcommandsrh  zadditional text)rg  r^  ra  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   ru  rw  r   r  r  r  r  )r   r1   rz  r|  r~  s        r   test_subparser_title_helpz+TestAddSubparsers.test_subparser_title_helpj	  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rN   )r   r   r1   r:   r   r   r  r   )r   r   expected_helpr  s       r   _test_subparser_helpz&TestAddSubparsers._test_subparser_help	  s[    23 	5rKK""8>>#34	5(;(;<	5 	5s   *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_help	  "    !!*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_help	  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rl  z0.5 1alias1 bFrj  rz  r  z0.5 1alias2 b)r   r   r  r   rz   r0   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   rX  r:   r   r0   s     r   test_error_alias_invocationz-TestAddSubparsers.test_error_alias_invocation	  s8    !!$!/&&v'8'8'6'<'<'>	@r   c                     | j                  dd      }d | _        | j                  |j                         t	        j
                  d             y )NT)rl  rx  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  r0   s     r   test_alias_helpz!TestAddSubparsers.test_alias_help	  sH    !!$t!D++-x @ 0 	r   )FNF)r   r   r    rX  r   rJ   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   rU  rU  3  s    (@ >B!5nI
I
&
,;>//'



'"&$ D$*<=
	
@
r   rU  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'   rc  rA  rB  r  r  r  r6  1 2 3)r   r   r   rz   r:   r   r   r   r1   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'   rA  rB  r  r  r  r6  r  r   r   r   rz   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'   rA  rB  r  frellr  r  r  rL  )r'   rA  rB  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  r  r@   r   r   r  r  	  s    J++
+r   r  c                   t     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 xZS )TestParentParsersc                 8     | j                   t        g|i | y rN   rW  rw   s      r   rX  z+TestParentParsers.assertArgumentParserError	  rY  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rH  z--wr   r  r  r   r  r{  z--dr  r   r   r   )r   rJ   r   wxyz_parentr   r   abcd_parentw_parentz_parentab_mutex_parentadd_mutually_exclusive_grouprR   rZ   basenamer   r   main_program)r   x_groupc_groupr   r   s       r   rJ   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  rf   rY  r  )r   r  r   r:   r   rz   r0   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 Nr  )_test_mutex_abr  r:   r   r0   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)rH  r  r  )r  r   r  r:   r   r  r1   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   rz  r  Tr  r  )r   rz   rX  )r   r:   s     r   r  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 )Nr  z--d 1 --w 2 3 4r  r  r  rL  )r   rz  r  rf   rY  r  )r  r  r   r   r:   r   rz   r  s      r   test_multiple_parentsz'TestParentParsers.test_multiple_parents7
  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 )
Nr  z
-a --w 2 3TFr  r  )r   rz  rf   rY  r  z-a --w 2 3 -bz-a -b --w 2 3)r  r  r   r   r:   r   rz   rX  r  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 r  )r   r*   ArgumentErrorr+   r  r  r   s    r   test_conflicting_parentsz*TestParentParsers.test_conflicting_parentsG
  s9    ""##]]D$4$45 	 	7r   c                     | j                  t        j                  t        j                  | j                  | j
                  g       y r  )r   r*   r  r+   r  r  r   s    r   test_conflicting_parents_mutexz0TestParentParsers.test_conflicting_parents_mutexM
  s;    ""##%%t';';< 	 	>r   c                     | j                   | j                  g}t        |      }| j                  |j	                  dj                               t        d d d             y )Nr  r  r  r  )r  r  r   r   r:   r   rz   r  s      r   test_same_argument_name_parentsz1TestParentParsers.test_same_argument_name_parentsS
  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 )
NrA  r  r   zbar -b 1 --d 2 3 4r  r  r  rL  )r   rz  r  r   )	r   ru  rw  r  r   r   r:   r   rz   )r   r1   rz  abcde_parsers       r   test_subparser_parentsz(TestParentParsers.test_subparser_parentsY
  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'   r  r  r{  rA  r   zfoo -a 4TFrL  ry  zbar -b  --w 2 3 4r  r  )r   rz  rf   rY  r  r   zfoo -a -b 4zbar -b -a 4)r   ru  r  rw  r   r   r  r   r:   r   rz   rX  )r   r1   rz  r  
abc_parserr  wxyzabe_parsers          r   test_subparser_parents_mutexz.TestParentParsers.test_subparser_parents_mutexa
  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 )Nr  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   )	r  r  r   r  r  r   r  r  format)r   r  r1   parser_helpprognames        r   test_parent_helpz"TestParentParsers.test_parent_helpt
  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 )NFr  rc  gdrg  r^  rW  r   r  r  r  )r  re  r  rb  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  r  )r   parentrc  r  r1   r  r  s          r   test_groups_parentsz%TestParentParsers.test_groups_parents
  s    +U;%%CT%B	t	t//1	t	t+VH=-v/@/@"	$ ((*$$hoo 7 F8HS"6'8 	9r   )r   r   r    rX  rJ   r  r  r  r  r  r  r  r  r
  r  r  r  r  r!   r"   s   @r   r  r  	  sT    ?@:82
/
/AI87>496&909r   r  c                   $    e Zd Zd Zd Zd Zd Zy) TestMutuallyExclusiveGroupErrorsc                 b    t               }| j                  } |t        |j                  d       y )Nr'   )rg  )r   r   r   r  )r   r1   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  rA  r  rq  rp  )r   r  r   r   r  r*   PARSER)r   r1   r   r   r   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   r,  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   r1   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                     t        j                         }|j                         }| j                  t              5  |j                  dg       d d d        y # 1 sw Y   y xY w)Nr4   )r*   r+   r  r   r  r:   r   r1   r   s      r   test_empty_groupz1TestMutuallyExclusiveGroupErrors.test_empty_group
  sQ    ((*335z* 	&tf%	& 	& 	&s   AAN)r   r   r    r!  r$  r  r+  r@   r   r   r  r  
  s    L
	GJ(&r   r  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	                  |||j                                % y NFr  
get_parserr:   r   r   r   r   r   r:   r   args_strings       r   test_failures_when_not_requiredz'MEMixin.test_failures_when_not_required
  sM    __e_4??
#== 	FKeZ1B1B1DE	Fr   c                     | j                  d      j                  }t        }| j                  dgz   D ]#  }| j	                  |||j                                % y )NTr  r   r0  r2  s       r   test_failures_when_requiredz#MEMixin.test_failures_when_required
  sT    __d_3>>
#==B4/ 	FKeZ1B1B1DE	Fr   c                     | j                  d      j                  }| j                  | j                  z   }|D ]-  \  }} ||j	                               }| j                  ||       / y r/  )r1  r:   r   successes_when_not_requiredr   r   )r   r:   r   r3  r   	actual_nss         r    test_successes_when_not_requiredz(MEMixin.test_successes_when_not_required
  sc    __e_4??
NNT%E%EE	(1 	5$K";#4#4#67IY4	5r   c                     | j                  d      j                  }| j                  D ]-  \  }} ||j                               }| j	                  ||       / y NTr  )r1  r:   r   r   r   )r   r:   r3  r   r9  s        r   test_successes_when_requiredz$MEMixin.test_successes_when_required
  sS    __d_3>>
(, 	5$K";#4#4#67IY4	5r   c                     | j                  d      j                  }| j                  }| j                   |       t	        j
                  |             y r/  )r1  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 r<  )r1  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/  )r1  r  r?  ra  r   r  r  r   r  ra  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<  )r1  r  rD  ra  r   r  r  rG  s      r   test_help_when_requiredzMEMixin.test_help_when_required  sG    ooto4@@''$))3(=>r   N)r   r   r    r4  r6  r:  r=  rB  rE  rH  rJ  r@   r   r   r-  r-  
  s.    FF55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[  r&  r  r,  rc  r  r`  r~  rb  baz help)rr  r  ra  r   r  r   r   r  r1   r   s       r   r1  z&TestMutuallyExclusiveSimple.get_parser  sN    +833X3F747#SzJr   --bar X --baz Yz--bar X --baz--bar Xr3  rA  rB  z--bar X --bar Zrb  --baz Yre  r`  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
        rN   r   r   r    r1  r   rz   r   r8  r?  rD  ra  r@   r   r   rL  rL    s     "?3H	B3D)*	B3D12	B4S)*	"3'(	I 
RDd#$#Dr   rL  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[  r&  z--abcdez
abcde helpr  z--fghijz
fghij helpr  z--klmnoz
klmno helpz--pqrstz
pqrst helpr   r   r  rP  s       r   r1  z$TestMutuallyExclusiveLong.get_parser0  sp    +8IL9IL933X3F9<89<8r   z--klmno X --pqrst Yz	--klmno Xr3  )abcdefghijklmnopqrstz--abcde Y --klmno Xre  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
    rN   rU  r@   r   r   rW  rW  .  s     &&H	bt4s$GH	SCt<	>	bt4t3GH	TD<	>I 
Rd$d$?@#Dr   rW  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[  r&  r  r   r  r  r  rp  r`  r   r  r   r*   ro  rP  s       r   r1  z/TestMutuallyExclusiveFirstSuppressed.get_parser[  sR    +833X3F4h&7&784HEr   z-x X -yz-x Xr3  Trk  z	-x X -x Yre  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
        rU  r@   r   r   r_  r_  Y  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[  r&  r  --spamr   r`  r+  r  z	--bladderr  ra  )r   r  r1   r   r  s        r   r1  z.TestMutuallyExclusiveManySuppressed.get_parser|  sc    +833X3F  H\0A0ABJ}83D3DEKh//0r   )z--spam --badgerz--badger --bladder Bz--bladder B --spamre  TN)r  r1  bladderr+  Fz--bladder Br?  z--spam --spamr   z!        usage: PROG [-h]
        P
        options:
          -h, --help  show this help message and exit
        r   r   r    r1  r   rz   r   r8  rD  r?  ra  r@   r   r   rc  rc  z  s    H 
24d;<	RU5$?@	dC@A	"$tTBC	I 
RU467#5 1Dr   rc  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g      fd ed	dg d      fgZd ed	dd      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d       |S )Nr[  r&  r  r   r   FOOr`  re  SPAMr  r1  r  r3  BADGERrr  rj  ra  rO  rP  s       r   r1  z5TestMutuallyExclusiveOptionalAndPositional.get_parser  sc    +833X3F7<eD8&183(Kr   )z--foo --spam Sz
--spam S XzX --foozX Y Z --spam Sz	--foo X Yr   TNr3  )r'   r  r1  z--spam SFSzX Y Z)r3  re  rb  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
        rU  r@   r   r   rj  rj    s    H 
"D56	REC89	bUse45	"T/BC	I 
RES12#	Dr   rj  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[  r&  r   r   rm  r`  r  r  a helpr  b helpr  rp  r  c helprY  rP  s       r   r1  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   rz  r{  r   rY  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
        Nrh  r@   r   r   rr  rr    s     7H	rDEUeu=>	rETUeu=>	rEUdeu=>	"tu?@	"u$?@	R%5DDDABI 
R%5EUe<=	rEUetu=>	rEUeu=>#5 1	Dr   rr  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[  r&  zTitled groupzGroup descriptionr  r  r,  rc  r  r`  rN  )r   r   r  r   )r   r  r1   titled_groupmutex_groups        r   r1  z'TestMutuallyExclusiveInGroup.get_parser  sk    +800 .A 1 C 55x5H 	  z :  z :r   rQ  z--baz X --bar YrR  r3  rS  rT  re  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
        rN   rU  r@   r   r   rz  rz    si     "#45H	B3D)*	B4S)*I
 
RDd#$#
Dr   rz  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[  r&  r   rm  r  r  r   rp  r`  r  r   r~  rt  rs  r  ru  r  rv  rY  rP  s       r   r1  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 -brw  z-c X AzX Ard  Fr3  rx  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
        rh  r@   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[  r&  r  r  r  r  r  r  r  r  )r   r  r   warningscatch_warningssimplefilterr  )r   r  r1   r   r(  group3s         r   r1  z&TestMutuallyExclusiveNested.get_parserM  s   +833X3F4 4 $$& 	K!!(,>?777JF	K 	D!D!$$& 	L!!(,>?88(8KF	L 	D!D!	K 	K
	L 	L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    r1  r?  rD  ra  r4  r6  r:  r=  r@   r   r   r  r  F  s8    "
D '+#"&'+$#' r   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]  rH  r  )r   r  r1  r   r]  )r   r  r  r1   r   s       r   r1  zMEPBase.get_parser}  s4    w0(0C+uvh@r   rN   )r   r   r    r1  r!   r"   s   @r   r  r  {  s     r   r  c                       e Zd Zy)&TestMutuallyExclusiveGroupErrorsParentNr   r   r    r@   r   r   r  r        r   r  c                       e Zd Zy)!TestMutuallyExclusiveSimpleParentNr  r@   r   r   r  r    r  r   r  c                       e Zd Zy)TestMutuallyExclusiveLongParentNr  r@   r   r   r  r    r  r   r  c                       e Zd Zy)*TestMutuallyExclusiveFirstSuppressedParentNr  r@   r   r   r  r    r  r   r  c                       e Zd Zy))TestMutuallyExclusiveManySuppressedParentNr  r@   r   r   r  r    r  r   r  c                       e Zd Zy)0TestMutuallyExclusiveOptionalAndPositionalParentNr  r@   r   r   r  r    r  r   r  c                       e Zd Zy))TestMutuallyExclusiveOptionalsMixedParentNr  r@   r   r   r  r    r  r   r  c                       e Zd Zy)7TestMutuallyExclusiveOptionalsAndPositionalsMixedParentNr  r@   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   rA  rp  )rY  r  rX  rB  r  )r   r  r   set_defaultsr   rz   r:   r0   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'   rA  rk  r   xfooxri  rB  r   r  r  )r   r  r   r   rz   r:   r   r0   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   rA  r  rk  )r   r  ru  rw  r   rz   r:   r   )r   r1   rz  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 )NFr  r'   r   r  r  )r   r  r1   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 )Nr3  rp  r  r  )r*   r+   ru  rw  r  r   rz   r:   )r   r1   xparsers      r   )test_set_defaults_on_parent_and_subparserz9TestSetDefaults.test_set_defaults_on_parent_and_subparser  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Wr3  re  rb  r  rW  r   XXri  rY  r~  rq  r  ZZr  WWYY)r   r  r   r   rz   r:   r0   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  r3  re  rb  r  r'   rW  r   r  ri  rY  r~  rq  r  r  r  r  r  )r   r  r   r   r   rz   r:   r*  s      r   ,test_set_defaults_same_as_add_argument_groupz<TestSetDefaults.test_set_defaults_same_as_add_argument_group  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  r@   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'   rA  r   r,  r   r  r1  r  )r   r  get_defaultr   r  r   r  r0   s     r   test_get_defaultzTestGetDefault.test_get_default  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  r@   r   r   r  r    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 )	Nrp  r  rk  r   r   rY  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  r@   r   r   r  r  $  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 rN   r@   r   s     r   test_wrapperzUTestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__.<locals>.test_wrapperH  r   r   )func_suffixstd_nametest_format
test_printtest_print_filer   r   r   )r   
test_classr  r  r   r   r  s          r   r   z?TestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__?  s    #.  ("&"2"2"&//"&"6"6"8 AI ,5+=+={ KI5> (09- J	<@A % 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   ru   rv   r   r   r   ru  rw  )r   r   r1   argument_sig
group_sigs	group_sigargument_sigsr   subparsers_sigsrz  subparser_sigs              r   r   zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests._get_parserP  s`   !00,,116--446 %,F4I2$N ?L'F''):): ?*6*=*=?? %V-H"M
0: B,I}5F55y~~ J8A8H8HJE(5 B***L,=,= B-9-@-@BBB #*&2I2"N"!'!6!6!8J)8 G-
--}/A/A G1>1E1EGG r   c                     t        || j                        }t        j                  |      }d |_        |j                  ||       y rN   )r   r  r  r  r  r   )r   r   parser_textexpected_texts       r   _testz<TestHelpFormattingMetaclass.__init__.<locals>.AddTests._testf  s9     '0@0@ A ( >!%""=+>r   c                     | j                  |      }t        |d| j                  z        }| j                  | |              y )Nz	format_%s)r   r   r  r  )r   r   r1   r  s       r   r  zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_formatl  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   r  r   r  r   r   r   r  )r   r   r1   print_
old_streamr  s         r   r  zATestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_printq  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 r  )r   r   r  r   r   r  )r   r   r1   r  sfiler  s         r   r  zFTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print_file}  sQ    ))&1 d6F6F)FG#u#nn.

6;/r   N)	r   r   r    r   r   r  r  r  r  r@   r   r   r   r  =  s!    A",?-

00r   r   ))usager   )ra  r   )r   )r   rc   r   r   r   r  r  s          r   r   z$TestHelpFormattingMetaclass.__init__9  s>    >!F	0v F	0R&: 	1!KS+x0	1r   Nrx   r@   r   r   r  r  7  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\  rv  rw  0.1ry  r   r   X HELPr`  --yY HELPr  r'   FOO HELPrA  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    rs   r   r   r  r  ra  rw  r@   r   r   r  r    s    EM"*, 	D+i?DH5E!E
#E
# !#E   D Gr   r  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 )NrE   rM  )rF   r   rG   rH  rH   s     r   rJ   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    rJ   r  r   r   r  r  ra  rw  r@   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[  r  r  r  r\  rv  rw  r  ry  r   r   r  r`  r  r  r  r'   r  rA  r  zGROUP TITLEzGROUP DESCRIPTIONri  rB  zBAZ HELPr  r  zZ HELPrs  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
    r  Nr  r@   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USAGEr  r  r^  r   r   r  r`  r  r  r  ekiekiekifekangzEKI HELPrA  r          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  r@   r   r   r  r    sl    >mDDH5E!J/E
#	 !#E   D Gr   r  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 wrappedrb  r   r  zoddly
    formatted -x helpr  ra  rY  r  znormal y helprg  z'
    oddly formatted group

descriptionri  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  r@   r   r   r  r  6  s    H)* 	D$ &= 	>C_5 
W #0 
1 d<$% 
&		'
!E   D( Gr   r  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
Drb  r   r  zxXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXr  rY  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`  r  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  r@   r   r   r	  r	  j  sz    H[AD$]3C\2
 
X\@B 	C!E   D, Gr   r	  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)TestHelpWrappingLongNamesr   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\  rv  rw  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 Vry  r   XXXXXXXXXXXXXXXXXXXXXXXXXzdXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHr  rY  yyyyyyyyyyyyyyyyyyyyyyyyyr
  r  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 ZHr  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  r@   r   r   r  r    s    FzBD+iDD(6C5 
Xh\:XL9; 	<!
E   D<Gr   r  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[  r&  rW  r  rf   rs  r   r  r   r   r  rz  r  )ra  rr  r{  r~  r   zWhether to foo)ra  r   r,  zWhether to barT)ra  rj  r   r  z--foobarz--barfoor   z--bazzzBazz!)r   rj  ra  r   r  rY  r  ru  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    rs   r   r*   r  ro  r   r  r  ra  rw  r@   r   r   r  r    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   r  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[  r&  
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    rs   r   r   r  ra  rw  r@   r   r   r  r    sL    'L"89D,(FG
E   D Gr   r  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]  rH  xxxxr   r   r  r   yyyyrz  r  rY  z.        usage: PROG [-x X] [-y Y] a b
        zn
        xxxx:
          -x X  x
          a     a

        yyyy:
          b     b
          -y Y  y
        r   Nr  r@   r   r   r  r    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<PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPr&  rW  r  r  r   r3  r   rz  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  r@   r   r   r  r  6  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  r&  rW  WWWWWWWWWWWWWWWWWWWWWWWWWr  r   r  r  YYYYYYYYYYYYYYYYYYYYYYYYYr  ZZZZZZZZZZZZZZZZZZZZZZZZZr   rz  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  r@   r   r   r!  r!  S  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  r@   r   r   r&  r&  w  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[  r&  rW  r"  r  r   r  r  r#  r  r$  r   rz  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  r@   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[  r&  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  r@   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[  r&  r   r  r  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  r@   r   r   r0  r0    sr    F'D(#D(#D(#HHH !#E   D Gr   r0  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[  r&  r   r  r  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  r@   r   r   r2  r2    s]    J'D(#D(#D(#
 !#E
   D Gr   r2  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  r@   r   r   r4  r4    sV    L7HHH
 !#E   D Gr   r4  c            
           e Zd Z	  ed      Z eded       edddd	d
       ed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[  r&  r   z"x %(prog)s %(default)s %(type)s %%rd  r  r   r   XXXz y %(prog)s %(default)s %(const)s)r   rj  r  ra  r   r  z$foo %(prog)s %(default)s %(choices)srn  r,  rB  rp  r  BBBz!bar %(prog)s %(default)s %(dest)s)rj  r  r  ra  r  zspam %(prog)s %(default)sr  r1  rj  zbadger %(prog)s %(default)s)rj  ra  r   r  za %(prog)s %(default)sr  r  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    rs   r   r  r   r  r  ra  rw  r@   r   r   r6  r6  .  s    D'Ds5	7D%3	5GU7	9GUQFE4	6F45Hc(EF 
W34b'?@
 	!E   D" Gr   r6  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]  r  z         usage: PROG FOO
        rg  r   Nr  r@   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  r@   r   r   r=  r=  m  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    rs   r*   ro  r   r   r  ra  r  rw  r@   r   r   r?  r?  z  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    rs   r   r*   ro  r   r  r  ra  rw  r@   r   r   rB  rB    s[    I7G(++,F% !#E   D
 Gr   rB  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[  r&  r   r_  r  r  r@  r   r,  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    rs   r   r   r*   ro  r  r  ra  rw  r@   r   r   rE  rE    sq    F'G*%F%
 
WG(*;*;<=>!E   D Gr   rE  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[  r&  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   NrC  r@   r   r   rI  rI    sY    K'G*%F**+ !#E   D Gr   rI  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[  r&  r   Tr_  )r  ra  z+        usage: PROG [-h] --foo FOO
        rJ  r   Nr  r@   r   r   rL  rL    sK    8'Gd4 !#E   D Gr   rL  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]  rG  rH  z^^foor   r_  r`  z;bz;;barrc  r  z-        usage: PROG [^^foo] [;b BAR]
        zf
        options:
          ^^foo              foo help
          ;b BAR, ;;bar BAR  bar help
        r   Nr  r@   r   r   rN  rN    s[    DTEJGLz:D'
+ !#E   D Gr   rN  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  r@   r   r   rP  rP    sU    G7G*%F% !#E   D Gr   rP  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[  r&  r   r  rF  z
        positional arguments:
          spam

        options:
          -h, --help  show this help message and exit
          --foo FOO
        r   Nr  r@   r   r   rR  rR    sM    ;'GF !#E   D Gr   rR  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)TestHelpTupleMetavarr[  r&  rW  rf   r  )W1W2)ra  rr  r  r   r   r  )X1X2r  rY  ru  )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  r@   r   r   rT  rT  *  sx    ,'Ds#|<Ds#|<Ds!-?@Ds#x8	 !#E   D Gr   rT  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@  rg  ?    This text
  should be indented
    exactly like it is here
ri  r,  rc  >        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    rs   r*   RawTextHelpFormatterr   r   r  r  ra  rw  r@   r   r   r^  r^  E  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@  rg  rb  ri  r,  rc  rc  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    rs   r*   RawDescriptionHelpFormatterr   r   r  r  ra  rw  r@   r   r   rf  rf  v  s    'X%I%I 	G ; 	<F% 
W #B 
C gJ
'	(	*!E   D* Gr   rf  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  r,  r   rc  r`  z--tazzWhether to taz itT)r   ra  rj  z--corgezWhether to corge itz--quuxzSet the quuxr   )ra  rj  r  r@  r1  r~  woodenzbadger helpro  rg  ri  r`  rN  )r   rj  ra  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    rs   r*   ArgumentDefaultsHelpFormatterr   r  ro  r   r  r  r  ra  rw  r@   r   r   ri  ri    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   ri  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^  rb  -Vrv  rw  z3.6ry  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  r@   r   r   rm  rm    sK    6MBt[ERS "E   D Gr   rm  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[  r&  r\  rv  rw  rx  )r   rw  ra  r   r_  r  r  r@  rF  rG  N)r   r   r    rs   r   r*   ro  r   r  r  ra  r@   r   r   rp  rp    se    M'D+i""	$G*%F%	 !#E   Dr   rp  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 subcommandsrb  r\  rv  rw  r  ry  )r   rz  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
        r  N)
r   r   r    rs   r   r   r  r  ra  rw  ).0rc   rs   s   000r   rr  rr    sw    ?'ACt[ERS *CD D!% !d^ DE  
 
DG'Ds   Arr  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[  rs  rb  r\  rv  rw  r  ry  ))r   za subcommand help)rz  zb subcommand help)r{  zc subcommand help)r  zd subcommand help)r   ze subcommand help)rc   ra  rt  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
        r  N)r   r   r    rs   r   r   subcommand_datar  r  ra  rw  )ru  rc   ra  rs   s   0000r   rw  rw  "  s    ?'ACt[ERSO 0?@ @!+t !d6 @E   D"G1@s   A
rw  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 rN   r@   r)  s    r   custom_typez(TestHelpMetavarTypeFormatter.custom_typeO  s    r   r[  r^  )r]  r^  ra  r   rh  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|  rs   r*   MetavarTypeHelpFormatterr   r  rk  r   r  r  ra  rw  r@   r   r   rz  rz  M  sr     M+3+L+LNs-t+6t%FH !#E   D Gr   rz  c                   h    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y)TestInvalidArgumentConstructorsc                 v    t        j                         } | j                  t        |j                  g|i | y rN   )r*   r+   r   r   r   r   ru   rv   r1   s       r   assertTypeErrorz/TestInvalidArgumentConstructors.assertTypeErrorq  s:    ((*)V%8%8 	+	+#)	+r   c                 v    t        j                         } | j                  t        |j                  g|i | y rN   )r*   r+   r   r  r   r  s       r   assertValueErrorz0TestInvalidArgumentConstructors.assertValueErrorv  s:    ((**f&9&9 	+	+#)	+r   c                     | j                  dd        | j                  dd       | j                  dd       | j                  di        y )	Nr   )rA  r  r'   )callbackr@   )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                 V    | j                          dD ]  }| j                  |        y )N)r  r  r   r  r   r   s     r   test_missing_destinationz8TestInvalidArgumentConstructors.test_missing_destination  s.    ) 	0F   /	0r   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  rh  )r  r  rk  r   s    r   test_invalid_typez1TestInvalidArgumentConstructors.test_invalid_type  s,    gE2gS%L9r   c                 b   | j                  dd       | j                  dd       | j                  dd       t        j                         }| j                  t              5 }|j                  dd       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)	Nr   r'   r   rB  r   r  r  z
store-truezunknown action)	r  r*   r+   r   r  r   r  r   r  r  s      r   test_invalid_actionz3TestInvalidArgumentConstructors.test_invalid_action  s    d51eE2g.AB((*z* 	>b=	>&BLL(9:	> 	>s   #B%%B.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$  rA  rB  z+dest supplied twice for positional argument)r*   r+   r   r   r  r  r   r  r  s      r   test_multiple_destz2TestInvalidArgumentConstructors.test_multiple_dest  st    ((*'z* 	3bE2	3C",,'	)	3 	3s   A>>Bc                     dD ]B  }t        t              t        d      t        d      fD ]  } | j                  dd|i|  D y )	N)r   r   r  r  r  rh  r  rq  abr  r   )r   )rv  r  r  )r   r   attrss      r   test_no_argument_actionsz8TestInvalidArgumentConstructors.test_no_argument_actions  sU    0 	CFC.$S/t,. C$$$B&BEBC	Cr   c                 b    dD ]*  }| j                  dd|       | j                  dd|       , y )N)r   r  r  r   r'   r  r  rr  r   r  r  s     r   !test_no_argument_no_const_actionszATestInvalidArgumentConstructors.test_no_argument_no_const_actions  sA    < 	AF   U6 B   S @	Ar   c                     dD ][  }| j                  dd|       | j                  dd|       dD ],  }| j                  dd||       | j                  dd||       . ] y )	Nr  r   r   r  r  )rp  r  r  r'   )r  rr  r   r  )r   r   rr  s      r   #test_more_than_one_argument_actionszCTestInvalidArgumentConstructors.test_more_than_one_argument_actions  s    ) 	BF !!$a!?!!&&!A ' B%%d%,1& & B%%fE,1& & BB	Br   c                 :    dD ]  }| j                  dd|        y )N)r   r  r   r  r  r  r  s     r   test_required_const_actionsz;TestInvalidArgumentConstructors.test_required_const_actions  s*    5 	AF   S @	Ar   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_params  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_positional  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  r@   r   r   Successr    s    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  r@   )r   option_stringsr%  r  rj  r  r  s         r   r   zQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__init__  s2     6>'"g-"))O . ( "r   c                      y rN   r@   rw   s      r   r;  zQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__call__  s    r   N)F)r   r   r    r   r;  )r  s   r   rC  r    s     #(	,r   rC  re  )r   rj  r  r  )r   r   r*   r+   r   r   )r   rC  r1   r  s      @r   test_user_defined_actionz8TestInvalidArgumentConstructors.test_user_defined_action  sy    	i 		V 	  ((*'6#6#6!' 	 	I'6#6#6!' 	 	Ir   N)r   r   r    r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r@   r   r   r  r  n  sV    7+
+
70
%:;)CABA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  r,  rA  r   r  r   )r*   r+   r   r   r%  r   r1   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  rp  r  rl  BARrB  )rr  r  rj  r   r  ra  r  r%  )r*   r+   r   r  r   rr  r  rj  r   r  ra  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  r  r@   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   r  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   re  )r*   r+   r   r   r  r0   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]  r  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
            re  OLD_SPAMr  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   r1  r1   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+   ru  rw  r   r  )r   r1   sps      r   test_subparser_conflictz,TestConflictHandling.test_subparser_conflict2  s    ((*""$
j7)4(00--	5(00--	2(00--:, 	 	H(00--7) 	 	Er   N)r   r   r    r  r  r  r  r@   r   r   r  r  
  s    292Er   r  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rN   )r   r   r:   r   r   r  r  r   )r   r1   r   r  s       r   assertPrintHelpExitz3TestOptionalsHelpVersionActions.assertPrintHelpExitG  s`    23 	0rhnn./	0++-r||/B/BC	0 	0s    A33A<c                 F    | j                  t        |j                  |       y rN   )r   r   r:   r   r1   ru   s      r   rX  z9TestOptionalsHelpVersionActions.assertArgumentParserErrorL  s    -v/@/@$Gr   c                     t               }|j                  dddd       | j                  |d       | j                  |d       | j                  t        t
        |d       y )	Nr\  rv  rw  rx  ry  r4   rM  format_versionr   r   r  r   r  r   r0   s     r   test_versionz,TestOptionalsHelpVersionActions.test_versionO  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PPPr&  r\  rv  rw  z%(prog)s 3.5ry  zPPP 3.5
r   r   r   r   r:   r   r  r   r  s      r   test_version_formatz3TestOptionalsHelpVersionActions.test_version_formatV  ss    +7D+iX23 	&rtf%	&bll&9&9:	& 	&s   A99Bc                     t        d      }|j                  dddd       | j                  |d       | j                  |d	       | j                  t        t
        |d
       y )NFr  r\  rv  rw  rx  ry  r4   rM  r  )r   r   rX  r   r  r   r0   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)Nr7  r&  rn  rw  z%(prog)s 3.7ry  zXXX 3.7
r  r  s      r   test_version_actionz3TestOptionalsHelpVersionActions.test_version_actiond  sq    +7DNK23 	&rtf%	&bll&9&9:	& 	&s   A88Bc                     t        d      }| j                  |d       | j                  |d       | j                  |d       | j                  |d       y )NFr  r4   rM  r\  rv  )r   rX  r0   s     r   test_no_helpz,TestOptionalsHelpVersionActions.test_no_helpk  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   ra  r   r  rw  r\  rv  r  )r   r   r  rX  r   r  r   r0   s     r   test_alternate_help_versionz;TestOptionalsHelpVersionActions.test_alternate_help_versionr  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 )Nrv  rw  rx  ry  r   r   r   rY  )r   r   r'   z-x barzbaz -xz--bad-optionzfoo bar bazz %s r4   rM  r  r  )r   r1   valid_prefixesvalid_suffixesprefixsuffixr  s          r   !test_help_version_extra_argumentszATestOptionalsHelpVersionActions.test_help_version_extra_arguments{  s    +-K	5ID6C  ?'>=*II$ 	QF( 8(.78$$VVd];$$VVh->?ngv?OP	Qr   N)r   r   r    r  rX  r  r  r  r  r  r  r  r@   r   r   r  r  D  s8    +D
HM;M;<MQr   r  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 rN   )r   r  r   )r   objresult_stringr5   s       r   assertStringEqualzTestStrings.assertStringEqual  s)    $K 	7DT#Y6	7r   c                 p    t        j                  g dddddg dddd	
	      }d}| j                  ||       y )N)r   r  r  rz  r  r  r   rp  r  ru  FHELPMETAVAR	r  r%  r   rr  rj  r  r  ra  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*   rC  r  )r   optionr*  s      r   test_optionalzTestStrings.test_optional  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~  ri  )rj  g      ?ri  TzH HH HzMV MV MVr  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*   rC  rk  r  )r   argumentr*  s      r   test_argumentzTestStrings.test_argument  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  r  r   r  r*  s      r   test_namespacezTestStrings.test_namespace  s)    BF30r6*r   c                 Z    t        j                  di ddi}d}| j                  ||       y )N"quotezNamespace(**{'"': 'quote'})r@   r  r  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   rp  r  r  z Namespace(a=1, **{'"': 'quote'})r@   r  r  s      r   2test_namespace_kwargs_and_starkwargs_notidentifierz>TestStrings.test_namespace_kwargs_and_starkwargs_notidentifier  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)r@   r  r  s      r   $test_namespace_starkwargs_identifierz0TestStrings.test_namespace_starkwargs_identifier  s.    27D/2(r6*r   c                 z    t        j                  d      }dt         j                  z  }| j                  ||       y )Nr[  r&  zvArgumentParser(prog='PROG', usage=None, description=None, formatter_class=%r, conflict_handler='error', add_help=True))r*   r+   HelpFormatterr  )r   r1   r*  s      r   test_parserzTestStrings.test_parser  s<    ((f5'556 	 	vv.r   N)r   r   r    r  r  r  r  r  r  r  r  r@   r   r   r  r    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  r  )r*   r  r   r  r   r   r   rz  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 )Nrp  r  r  )rz  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 )Nrp  r  r  )r*   r  assertIsr   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  r@   r   r   r  r    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   rg   )rR   rZ   splitextri   r  )r   rZ   r   r  s       r   _test_module_encodingz"TestEncoding._test_module_encoding   sO    ''""4(a$g. 	!FFH	 	 	s   AAc                 B    | j                  t        j                         y rN   )r  r*   __file__r   s    r   test_argparse_module_encodingz*TestEncoding.test_argparse_module_encoding  s    ""8#4#45r   c                 .    | j                  t               y rN   )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   r@   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$  r@   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*   ArgumentTypeErrorr)  s    r   r  z<TestArgumentTypeError.test_argument_type_error.<locals>.spam  s    ,,W55r   r[  Fr  r   rh  r7  z-usage: PROG x
PROG: error: argument x: spam!
)r   r   r   r   r:   r   r  r   )r   r  r1   r  s       r   test_argument_type_errorz.TestArgumentTypeError.test_argument_type_error  s|    	6 ,%HCd+23 	'rug&	'J,,	.	' 	's   A;;BN)r   r   r    r+  r@   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_posrh  -req_optTr  need_oner  )r   rr  req_optmyXargumentz
-req_opt=1)
r   r   r   r  r   r   r:   r  r=   r  r   r1   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3 	"rb!	"",,i(i(j)23 	/r}o.	/",,i(i(j)23 	=r}l;<	=",,i(i(j)#	" 	"	/ 	/	= 	=s$   *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/  rh  z	--req_optTr  z	--opt_optr~  )r   rr  rj  r2  opt_optz--req_opt=1)r   r   r   r  r  r   r   r:   r  r=   r  r4  s       r   %test_optional_optional_not_in_messagez=TestMessageContentError.test_optional_optional_not_in_messageH  s8   +rBIC0KcDAKd#$( 	 	*23 	"rb!	"",,i(i(i(23 	/r}o.	/",,i(i(i(	" 	"	/ 	/s   +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~  r  r  )	r   r   r   r   r:   r   r  r=   r  r4  s       r   'test_optional_positional_not_in_messagez?TestMessageContentError.test_optional_positional_not_in_message[  s    +rBI&1fM23 	"rb!	"",,i(34		" 	"s   BB%N)r   r   r    r5  r8  r;  r@   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>.spamm  s    .8"r   r   rA  r  z--foo spam!r@  r  )r*   r+   r   r:   r   r   rz   r   r  r1   ru   s   `   r   !test_type_function_call_only_oncez>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_oncel  s[    	# ((*G$>  !4!4!670$7r   N)r   r   r    rD  r@   r   r   r=  r=  j  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@  rA  )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   rz   rC  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@  r@   )rI  s    r   r  zYTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default.<locals>.spam  s    "r   r   0r  r@  r  rJ  rC  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  r@   )str_to_converts    r   rO  zYTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default.<locals>.extend  s    !C''r   --testr  r  z**)r  rJ  )r   rO  r1   ru   s       r   )test_no_double_type_conversion_of_defaultzITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default  sR    	( ((*H63?  $ 	-r   c                     t        j                         }|j                  ddt        g d       |j	                  g       }| j                  |j                  g        y )NrS  r  r  )r%  r   rj  r   )r*   r+   r   r   r:   r   r  r  s      r   test_issue_15906z0TestTypeFunctionCalledOnDefault.test_issue_15906  sT     ((*H6$&x 	 	9  $B'r   N)r   r   r    rK  rO  rT  rV  r@   r   r   rF  rF  z  s    	*8
.(r   rF  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 )Nr@   r*   r+   r:   r0   s     r   test_arguments_tuplez'TestParseKnownArgs.test_arguments_tuple      ((*"r   c                 N    t        j                         }|j                  g        y rN   rZ  r0   s     r   test_arguments_listz&TestParseKnownArgs.test_arguments_list  r\  r   c                 p    t        j                         }|j                  d       |j                  d       y )Nr   r   r*   r+   r   r:   r0   s     r   test_arguments_tuple_positionalz2TestParseKnownArgs.test_arguments_tuple_positional  s,    ((*C &!r   c                 r    t        j                         }|j                  d       |j                  dg       y )Nr   r`  r0   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  r,  r`  )r*   r+   r   r  r   r   rz   )r   r1   ru   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~  rp  )rr  r  r   re  r  r   r1  )r?  r$  r   r\  r  rL  ru  Tr?  )vr  r1  )r$  r   rL  )r*   r+   r   r  r  r   rz   )r   r1   r   ru   rf  s        r   
test_mixedzTestParseKnownArgs.test_mixed  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  rk  )rr  r  r   rJ  r  s      r   test_zero_or_more_optionalz-TestParseKnownArgs.test_zero_or_more_optional  sI    ((*CsJ?  $b4(r   N)
r   r   r    r[  r^  ra  rc  rg  rj  rl  r@   r   r   rX  rX    s%    "
!
5	6)r   rX  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g       |       | j                  g d|       dj	                         }|j                  |      \  }}| j                  t        dd
ddg      |       | j                  g d|       | j                  |j                         | j                  |j                  d       y )Nr[  r&  r   r'   r$  r,  rA  Tr  cmdrestr  )rr  r   zcmd --foo x 1 --bar y 2 3rY  r   r  )rA  rp  r'   rq  r  r  r  z!cmd --foo x 1 --error 2 --bar y 3rp  )z--errorr  r  )r*   r+   r   r  r   parse_intermixed_argsr   rz   r  parse_known_intermixed_argsr  r  r  )r   r1   rA  r   ru   rf  s         r   
test_basiczTestIntermixedArgs.test_basic  sO   ((f5G%0!!'!EE"F#C8*002++D1CiH$O..t4fCbA4H&1288:99$?fCqcBDI.7 	&,,'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[  r&  r  r   rY  ra  rq  rc  z\.\.\.)	r   r   r   r   r   rs  r=   r   r  )r   r1   r   r  s       r   test_remainderz!TestIntermixedArgs.test_remainder  s    +8D!C Cu-!!# y) 	/R((.	/R\\*I6	/ 	/s   'B''B0c                    t        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                  t        |j                  dj	                                | j                  |j                  d       y )Nr[  r&  Tr  r   r   rl  r`  re  rm  r  r1  r  r3  rn  ro  z	1 --foo 2r  r  )r1  r'   r  r  )
r   r  r   rs  r   r   rz   r   r   r  )r   r1   r   ru   s       r   test_exclusivez!TestIntermixedArgs.test_exclusive  s    +833T3B7<eD8&1HC8L++K,=,=,?@C:4dCTJ-v/K/KU[[][.r   c                 2   t        d      }|j                  d      }|j                  ddd       |j                  d	d
       |j                  dddd       | j                  t        |j
                  g        | j                  |j                  d       y )Nr[  r&  Tr  r   r   rl  r`  re  rm  r  r1  r  r3  rn  ro  )r   r  r   r   r   rs  r   r  r*  s      r   test_exclusive_incompatiblez.TestIntermixedArgs.test_exclusive_incompatible  s    +833T3B7<eD8&183(K)V%A%A2F.r   N)r   r   r    ru  rw  ry  r{  r@   r   r   rn  rn    s    -67
//r   rn  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/  rh  r0  Tr  r2  )r   r   r   r  r   r   r:   r  r=   rs  assertNotRegexr4  s       r   r5  zGTestIntermixedMessageContentError.test_missing_argument_name_in_message  s    +rBIC0JS4@23 	"rb!	"",,i(i(23 	-r((,	-",,C+i(	" 	"	- 	-s   D:DDD#N)r   r   r    r5  r@   r   r   r}  r}    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   rr  r  )r*   r+   r   )r   rr  r  r1   s       r   do_test_no_exceptionz+TestAddArgumentMetavar.do_test_no_exception7  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   r  r   r   r  ru   EXPECTED_MESSAGE)r   rr  r  r1   r  s        r   do_test_exceptionz(TestAddArgumentMetavar.do_test_exception;  ss    ((*z* 	GbugF	G**1-t/D/DE	G 	Gs   A;;Bc                 *    | j                  d d       y )Nr  r  r  r   s    r   test_nargs_None_metavar_stringz5TestAddArgumentMetavar.test_nargs_None_metavar_stringC  s    !!c!:r   c                 :    | j                  d t                      y )Nr  r  tupler   s    r   test_nargs_None_metavar_length0z6TestAddArgumentMetavar.test_nargs_None_metavar_length0F  s    T57;r   c                 *    | j                  d d       y )Nrt  r  r  r   s    r   test_nargs_None_metavar_length1z6TestAddArgumentMetavar.test_nargs_None_metavar_length1I  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_length2L  s    T:>r   c                 *    | j                  d d       y )Nrr  r  r  r   s    r   test_nargs_None_metavar_length3z6TestAddArgumentMetavar.test_nargs_None_metavar_length3O  s    T?Cr   c                 *    | j                  dd       y )Nr~  r  r  r  r   s    r   "test_nargs_optional_metavar_stringz9TestAddArgumentMetavar.test_nargs_optional_metavar_stringT      !!S!9r   c                 :    | j                  dt                      y )Nr~  r  r  r   s    r   #test_nargs_optional_metavar_length0z:TestAddArgumentMetavar.test_nargs_optional_metavar_length0W      S%':r   c                 *    | j                  dd       y )Nr~  rt  r  r  r   s    r   #test_nargs_optional_metavar_length1z:TestAddArgumentMetavar.test_nargs_optional_metavar_length1Z      !!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~  rr  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_stringe  r  r   c                 :    | j                  dt                      y )Nr  r  r  r   s    r   %test_nargs_zeroormore_metavar_length0z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length0h  r  r   c                 *    | j                  dd       y )Nr  rt  r  r  r   s    r   %test_nargs_zeroormore_metavar_length1z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length1k  r  r   c                 *    | j                  dd       y )Nr  r  r  r  r   s    r   %test_nargs_zeroormore_metavar_length2z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length2n      !!Z!@r   c                 *    | j                  dd       y )Nr  rr  r  r  r   s    r   %test_nargs_zeroormore_metavar_length3z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length3q  r  r   c                 *    | j                  dd       y )Nr  r  r  r  r   s    r   #test_nargs_oneormore_metavar_stringz:TestAddArgumentMetavar.test_nargs_oneormore_metavar_stringv  r  r   c                 :    | j                  dt                      y )Nr  r  r  r   s    r   $test_nargs_oneormore_metavar_length0z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length0y  r  r   c                 *    | j                  dd       y )Nr  rt  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  rr  r  r  r   s    r   $test_nargs_oneormore_metavar_length3z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length3  r  r   c                 *    | j                  dd       y )Nra  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 )Nra  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 )Nra  rt  r  r  r   s    r   $test_nargs_remainder_metavar_length1z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length1  s    !!v!>r   c                 *    | j                  dd       y )Nra  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 )Nra  rr  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 )Nr  r  r  r   s    r   !test_nargs_parser_metavar_length0z8TestAddArgumentMetavar.test_nargs_parser_metavar_length0  s    VUW=r   c                 *    | j                  dd       y )Nr  rt  r  r  r   s    r   !test_nargs_parser_metavar_length1z8TestAddArgumentMetavar.test_nargs_parser_metavar_length1  s    !!!?r   c                 *    | j                  dd       y )Nr  r  r  r  r   s    r   !test_nargs_parser_metavar_length2z8TestAddArgumentMetavar.test_nargs_parser_metavar_length2  s    VZ@r   c                 *    | j                  dd       y )Nr  rr  r  r  r   s    r   !test_nargs_parser_metavar_length3z8TestAddArgumentMetavar.test_nargs_parser_metavar_length3  s    V_Er   c                 *    | j                  dd       y )Nrp  r  r  r  r   s    r   test_nargs_1_metavar_stringz2TestAddArgumentMetavar.test_nargs_1_metavar_string      !!3!7r   c                 :    | j                  dt                      y )Nrp  r  r  r   s    r   test_nargs_1_metavar_length0z3TestAddArgumentMetavar.test_nargs_1_metavar_length0      Q8r   c                 *    | j                  dd       y )Nrp  rt  r  r  r   s    r   test_nargs_1_metavar_length1z3TestAddArgumentMetavar.test_nargs_1_metavar_length1  s    !!6!:r   c                 *    | j                  dd       y )Nrp  r  r  r  r   s    r   test_nargs_1_metavar_length2z3TestAddArgumentMetavar.test_nargs_1_metavar_length2      Q
;r   c                 *    | j                  dd       y )Nrp  rr  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  r  r   c                 *    | j                  dd       y )Nr  rt  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  rr  r  r  r   s    r   test_nargs_2_metavar_length3z3TestAddArgumentMetavar.test_nargs_2_metavar_length3  r  r   c                 *    | j                  dd       y )Nru  r  r  r  r   s    r   test_nargs_3_metavar_stringz2TestAddArgumentMetavar.test_nargs_3_metavar_string  r  r   c                 :    | j                  dt                      y )Nru  r  r  r   s    r   test_nargs_3_metavar_length0z3TestAddArgumentMetavar.test_nargs_3_metavar_length0  r  r   c                 *    | j                  dd       y )Nru  rt  r  r  r   s    r   test_nargs_3_metavar_length1z3TestAddArgumentMetavar.test_nargs_3_metavar_length1  r  r   c                 *    | j                  dd       y )Nru  r  r  r  r   s    r   test_nargs_3_metavar_length2z3TestAddArgumentMetavar.test_nargs_3_metavar_length2  r  r   c                 *    | j                  dd       y )Nru  rr  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  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  3  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   rq  r   )	r*   r+   r   r  r   r   r  ru   EXPECTED_RANGE_MESSAGEr   rr  r1   r  s       r   do_test_range_exceptionz(TestInvalidNargs.do_test_range_exception  sm    ((*z* 	6bu5	6**1-t/J/JK	6 	6   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   r  r   r   r  ru   EXPECTED_INVALID_MESSAGEr  s       r   do_test_invalid_exceptionz*TestInvalidNargs.do_test_invalid_exception  sm    ((*z* 	6bu5	6**1-t/L/LM	6 	6r  c                 L    | j                  d       | j                  d       y )Nr   rq  abcd)r  r   s    r   test_nargs_alphabeticz&TestInvalidNargs.test_nargs_alphabetic  s$    &&S&1&&V&4r   c                 (    | j                  d       y )Nr   rq  )r  r   s    r   test_nargs_zeroz TestInvalidNargs.test_nargs_zero  s    $$1$-r   N)	r   r   r    r  r  r  r  r  r  r@   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 rN   )r*   __all__r  r   r  s     r   r  zTestImportStar.test  s*    $$ 	5DOOGHd34	5r   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   rc   r  r   s       r   'test_all_exports_everything_but_modulesz6TestImportStar.test_all_exports_everything_but_modules  sy      $H~335
eOOC(DJ,>##E* 
 
 	x/?/?(@A
s   7BN)r   r   r    r  r  r@   r   r   r  r    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--proxyr  )r   rJ   r   r1   r   )r   r  r   s     r   rJ   zTestWrappingMetavar.setUp  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>
            )r1   r  r   r  r  )r   	help_texts     r   test_help_with_metavarz*TestWrappingMetavar.test_help_with_metavar  s4    KK++-	HOO 5 % 	r   )r   r   r    rJ   r  r!   r"   s   @r   r  r    s    =	r   r  c                       e Zd Zd Zd Zd Zy)TestExitOnErrorc                 ~    t        j                  d      | _        | j                  j                  ddt               y )NF)exit_on_errorz
--integersN)r  r   )r*   r+   r1   r   r  r   s    r   rJ   zTestExitOnError.setUp%  s-    --EB  s Er   c                     | j                   j                  dj                               }| j                  |t	        j
                  d             y )Nz--integers 4r  )integers)r1   r:   r   r   r*   r  r  s     r   !test_exit_on_error_with_good_argsz1TestExitOnError.test_exit_on_error_with_good_args)  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  r1   r:   r   r   s    r    test_exit_on_error_with_bad_argsz0TestExitOnError.test_exit_on_error_with_bad_args-  sF    x556 	;KK"">#7#7#9:	; 	; 	;s   *AAN)r   r   r    rJ   r  r  r@   r   r   r  r  #  s    F=;r   r  c                  @    i t         _        t               t        _        y rN   )r  r  rH  r  r@   r   r   tearDownModuler  2  s    EJEJr   __main__)r,   r8   r	  r   r  rR   r^   r\   r   r  rO   unittestr*   r  test.supportr   r   TextIOWrapperr   rB   r$   skip_unless_working_chmodr   rL   rs   rz   r   r   r   r+   r   r   r   r   r   r   r   r
  r  r   r"  r(  r*  r8  r;  rD  rT  rV  r[  r_  rh  rm  ro  rt  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/  r1  r3  r5  r8  r:  r=  r?  rA  rC  rJ  rP  rR  rU  rW  rY  r^  r`  rg  rm  rq  ru  r{  r  r  r   r   r  r  r  	eq_stderrr  r  
eq_bstderrr  r  r  r  r  skip_if_dac_overrider  r  r  r  r  r  r
  r  r  r&  r/  rE  rN  rU  r  r  r  r-  rL  rW  r_  rc  rj  rr  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  r!  r&  r,  r.  r0  r2  r4  r6  r:  r=  r?  rB  rE  rI  rL  rN  rP  rR  rT  r^  rf  ri  rm  rp  rr  rw  rz  r  r  r  r  r  r  r  r"  r&  r-  r=  rF  rX  rn  r}  r  r  r  r  r  r  r   mainr@   r   r   <module>r(     sT      	  	   
      " :""" :$FH%% F:x    $$D6 D %D.& ) )%) %# L>!8!8 >o9D o9b 		&'7Cn n 4. ^  ~  
> 
n . $ &N & ( , .^  
 
	> 	 . .  .> &. "> "
N 
~ N N > > >@
 
	 		> 	 &^  ~  "N "~ "n &N .~ N N 	^ 		N 	N > . > >   	 	 ~ 	 	 ~ n ^ N 	n 	^ N .   > 
^ 
	N 	>  
. 
   ~ "> &~ &.  
 
^ 6. & (. **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m9 m9f+&x +&Z-?f -?` '8  F( (V7H B!'8 !H*( *Z''8 'T%7H %P' 'R/('8 /(j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.l .b-\ -`0| 0dL (L 2 :' 'V< BxIh xI|-( -<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*) *)b=/ =/~) )0eDX eDP.x .@BX B ( 0;h ; zHMMO r   