
    /hh                    v   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKJr  S SKJr  S SKJr  S SKJrJr  S SKJr   " S S\R.                  5      r " S	 S
\R2                  5      r " S S\R2                  5      r\R6                   " S S\5      5       r " S S\5      r " S S\5      r " S S\ 5      r!S r" " S S\RF                  5      r$ " S S\%5      r&\4r'\&" S\'0 5      r( " S S\(5      r) " S S\(5      r* " S S \(5      r+ " S! S"\(5      r, " S# S$\(5      r- " S% S&\(5      r. " S' S(\(5      r/ " S) S*\(5      r0 " S+ S,\(5      r1 " S- S.\(5      r2 " S/ S0\(5      r3 " S1 S2\(5      r4 " S3 S4\(5      r5 " S5 S6\(5      r6 " S7 S8\(5      r7 " S9 S:\(5      r8 " S; S<\(5      r9 " S= S>\(5      r: " S? S@\(5      r; " SA SB\(5      r< " SC SD\(5      r= " SE SF\(5      r> " SG SH\(5      r? " SI SJ\(5      r@ " SK SL\(5      rA " SM SN\(5      rB " SO SP\(5      rC " SQ SR\(5      rD " SS ST\(5      rE " SU SV\(5      rF " SW SX\(5      rG " SY SZ\(5      rH " S[ S\\(5      rI " S] S^\(5      rJ " S_ S`\(5      rK " Sa Sb\(5      rL " Sc Sd\(5      rM " Se Sf\(5      rN " Sg Sh\(5      rO " Si Sj\(5      rP " Sk Sl\(5      rQ " Sm Sn\(5      rR " So Sp\5      rS " Sq Sr\(5      rT " Ss St\(5      rU " Su Sv\(5      rV " Sw Sx\(5      rW " Sy Sz\(5      rX " S{ S|\(5      rY " S} S~\(5      rZ " S S\(5      r[ " S S\(5      r\ " S S\(5      r] " S S\(5      r^ " S S\(5      r_ " S S\(5      r` " S S\(5      ra " S S\(5      rb " S S\(5      rc " S S\(5      rd " S S\(5      re " S S\(5      rf " S S\(5      rg " S S\(5      rh " S S\(5      ri " S S\(5      rj " S S\(5      rk " S S\(5      rl " S S\(5      rm " S S\(5      rn " S S\(5      ro " S S\(5      rp " S S\(5      rq " S S\(5      rr " S S\(5      rs " S S\(5      rt " S S\(5      ru " S S\(5      rv " S S\(5      rw " S S\(5      rx " S S\(5      ry " S S\(5      rz " S S\(5      r{ " S S\(5      r| " S S\(5      r} " S S\(5      r~ " S S\(5      r " S S\(5      r " S S\(5      r " S S\\(5      r " S S\\(5      r " S S\5      r\" 5       r\" 5       r " S S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r " S S\5      r " S S\\(5      r " S S\\(5      r " S S\\(5      r " S S\5      r\GR&                   " S S\\(5      5       r\GR&                   " S S\\(5      5       r\GR&                   " S S\\(5      5       r\GR&                   " S S\5      5       r " S S\5      r " S S\5      r " S S\(5      r " S S\(5      r " S S\(5      r " S S\5      r " S S\(5      r " S S\5      r " S S\(5      r " S GS \5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS	 GS
\5      r " GS GS\\5      r " GS GS\\5      r " GS GS\\5      r " GS GS\\5      r " GS GS\\5      r " GS GS\\5      r " GS GS\\5      r " GS GS\\5      r " GS GS\\5      r " GS GS\\5      r " GS GS \\5      r " GS! GS"\\5      r " GS# GS$\5      r " GS% GS&\\5      r " GS' GS(\\5      r " GS) GS*\\5      r " GS+ GS,\\5      r " GS- GS.\\5      r " GS/ GS0\\5      r " GS1 GS2\\5      r " GS3 GS4\\5      r " GS5 GS6\5      r " GS7 GS8\5      r " GS9 GS:\5      r " GS; GS<\%5      r\4r'\" GS=\'0 5      r " GS> GS?\5      r " GS@ GSA\5      r " GSB GSC\5      r " GSD GSE\5      r " GSF GSG\5      r " GSH GSI\5      r " GSJ GSK\5      r " GSL GSM\5      r " GSN GSO\5      r " GSP GSQ\5      r " GSR GSS\5      r " GST GSU\5      r " GSV GSW\5      r " GSX GSY\5      r " GSZ GS[\5      r " GS\ GS]\5      r " GS^ GS_\5      r " GS` GSa\5      r " GSb GSc\5      r " GSd GSe\5      r " GSf GSg\5      r " GSh GSi\5      r " GSj GSk\5      r " GSl GSm\5      r " GSn GSo\5      r " GSp GSq\5      r " GSr GSs\5      r " GSt GSu\5      r " GSv GSw\5      r " GSx GSy\5      r " GSz GS{\5      r " GS| GS}\5      r " GS~ GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      r " GS GS\5      Gr  " GS GS\5      GrGS GrG\GS:X  a]  G\" \GR
                  5      GS:  a1  \GR
                  GS   GS:X  a  \" \5        \GR                  " S 5        \GR                  " 5         gg(      N)StrEnum)captured_stderr)	os_helper)TestTranslationsBaseupdate_translation_snapshots)mockc                   6   ^  \ rS rSrSrSU 4S jjrS rSrU =r$ )StdIOBuffer   zReplacement for writable io.StringIO that behaves more like real file

Unlike StringIO, provides a buffer attribute that holds the underlying
binary data, allowing it to replace sys.stdout/sys.stderr in more
contexts.
c                    > UR                  S5      n[        TU ]	  [        R                  " [        R
                  " U5      5      SUS9  g )Nutf-8)newline)encodesuper__init__ioBufferedWriterBytesIO)selfinitial_valuer   	__class__s      ;/opt/python-3.13.8/usr/lib/python3.13/test/test_argparse.pyr   StdIOBuffer.__init__!   s@    %,,W5**2::m+DE ' 	 	3    c                     U R                  5         U R                  R                  R                  5       R	                  S5      $ )Nr   )flushbufferrawgetvaluedecoder   s    r   r   StdIOBuffer.getvalue&   s-    

{{'')0099r    ) 
)	__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes____classcell__r   s   @r   r
   r
      s    3
: :r   r
   c                        \ rS rSrS rS rSrg)StdStreamTest+   c                    [         R                  " 5       n[        R                  " S 5         [        R
                  " S5         UR                  SSS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nargparse._sys.exitr   foo)statusmessage)argparseArgumentParser
contextlibredirect_stderrr   patchexitr   parsers     r   test_skip_invalid_stderr&StdStreamTest.test_skip_invalid_stderr-   sX    ((*&&t,JJ+,KKq%K0 - -,,, -,s#   A6A%A6%
A3	/A66
Bc                    [         R                  " 5       nUR                  UR                  [        R
                  " UR                  S/5      4 H  nU R                  US9   [        R                  " S 5         [        5        n[        R                  " U5         [        R                  " S5         U" 5         U R                  UR                  5       S5        S S S 5        S S S 5        S S S 5        S S S 5        S S S 5        M     g ! , (       d  f       N3= f! , (       d  f       N<= f! , (       d  f       NE= f! , (       d  f       NN= f! , (       d  f       GM  = f)N-h)funcr2   zusage:)r6   r7   print_usage
print_help	functoolspartial
parse_argssubTestr8   redirect_stdoutr
   r9   r   r:   assertRegexr   )r   r=   rB   mocked_stderrs       r   test_skip_invalid_stdout&StdStreamTest.test_skip_invalid_stdout5   s    ((*f//$8
D $'**40**=9

/0  !7!7!99E 1 :  1 ('
 10 :9  10 ('sl   !E
8D9D(	D1(DD!D(	)D91E

DD
D%!D(	(
D62D99
EE


E	r#   N)r&   r'   r(   r)   r>   rL   r+   r#   r   r   r/   r/   +   s    1Fr   r/   c                       \ rS rSrS rSrg)TestCaseH   c                 V    U R                  [        R                  " 5       5      nSUS'   g )N80COLUMNS)enterContextr   EnvironmentVarGuardr   envs     r   setUpTestCase.setUpJ   s&     	 = = ?@Ir   r#   N)r&   r'   r(   r)   rX   r+   r#   r   r   rO   rO   H   s    r   rO   c                   ,    \ rS rSrS rS rS rS rSrg)TempDirMixinR   c                     [         R                  " 5       U l        [        R                  " 5       U l        [        R                  " U R                  5        g N)tempfilemkdtemptemp_dirosgetcwdold_dirchdirr!   s    r   rX   TempDirMixin.setUpU   s/     ((*yy{
r   c                    [         R                  " U R                  5        [         R                  " U R                  SS9 H\  u  pnU HP  n[         R
                  " [         R                  R                  U R                  U5      [        R                  5        MR     M^     [        R                  " U R                  S5        g )NF)topdownT)rb   re   rd   walkra   chmodpathjoinstatS_IWRITEshutilrmtree)r   rootdirsfilesnames        r   tearDownTempDirMixin.tearDownZ   st    
!#!FDdmmT:DMMJ  "G 	dmmT*r   c                     [         R                  R                  U R                  U5      n[	        USSS9 nUR                  U5        S S S 5        U$ ! , (       d  f       U$ = f)Nwr   encoding)rb   rk   rl   ra   openwrite)r   filename	file_pathfiles       r   create_writable_file!TempDirMixin.create_writable_filea   sN    GGLL9	)S73tJJx  4 43s   A
A!c                 l    [         R                  " U R                  U5      [        R                  5        g r^   )rb   rj   r   rm   S_IREAD)r   r}   s     r   create_readonly_file!TempDirMixin.create_readonly_fileg   s    
**84dllCr   )rd   ra   N)	r&   r'   r(   r)   rX   ru   r   r   r+   r#   r   r   r[   r[   R   s     
+Dr   r[   c                       \ rS rSrS rSrg)Sigj   c                     Xl         X l        g r^   argskwargsr   r   r   s      r   r   Sig.__init__l   s    	r   r   Nr&   r'   r(   r)   r   r+   r#   r   r   r   r   j   s    r   r   c                   &    \ rS rSrS rS rS rSrg)NSq   c                 :    U R                   R                  U5        g r^   )__dict__update)r   r   s     r   r   NS.__init__s   s    V$r   c                     [        U R                  R                  5       5      nSR                  U Vs/ s H  nSU-  PM
     sn5      n[	        U 5      R
                  < SU< S3$ s  snf )Nz, z%s=%r())sortedr   itemsrl   typer&   )r   sorted_itemstup	kwarg_strs       r   __repr__NS.__repr__v   sU    dmm1134IIEw}EF	:..	:: Fs   A&c                 0    [        U 5      [        U5      :H  $ r^   )varsr   others     r   __eq__	NS.__eq__{   s    DzT%[((r   r#   N)r&   r'   r(   r)   r   r   r   r+   r#   r   r   r   r   q   s    %;
)r   r   c                       \ rS rSrSS jrSrg)ArgumentParserError   Nc                 `    [         R                  XX#5        Xl        X l        X0l        X@l        g r^   )	Exceptionr   r5   stdoutstderr
error_code)r   r5   r   r   r   s        r   r   ArgumentParserError.__init__   s&    4&9$r   )r   r5   r   r   )NNNr   r#   r   r   r   r      s    %r   r   c           
      ,   [        [        R                  [        5      (       d#  [        [        R                  [        5      (       a  U " U0 UD6$ [        R                  n[        R                  n[        5       [        l        [        5       [        l          U " U0 UD6n[        [        U5      5       H  n[        XV5      nU[        R                  L a  [        XVU5        M/  U[        R                  R                  L a  [        XV[        US[        5      5        Mi  U[        R                  L a  [        XVU5        M  U[        R                  R                  L d  M  [        XV[        US[        5      5        M     UU[        l        U[        l        $ ! [         a[  nUR                  n	[        R                  R                  5       n
[        R                  R                  5       n[        SXU	5      S eS nAff = f! U[        l        U[        l        f = f)Nr   
SystemExit)
isinstancesysr   r
   r   listr   getattrsetattrr   BIN_STDOUT_SENTINELBIN_STDERR_SENTINELr   coder   r   )rG   r   r   
old_stdout
old_stderrresultkeyattrer   r   r   s               r   stderr_to_parser_errorr      s    #**k**j[.Q.Q4*6** JJCJCJ 	>00FDL)v+3::%F4SZZ...FXGZ)[\SZZ'F4SZZ...FXGZ)[\ *   

  	>66DZZ((*FZZ((*F%fd49=>		>  

s,   CF  F 
G8AG33G88G; ;Hc                   @   ^  \ rS rSrU 4S jrU 4S jrU 4S jrSrU =r$ )ErrorRaisingArgumentParser   c                 >   > [         [        U ]
  n[        U/UQ70 UD6$ r^   )r   r   rG   r   )r   r   r   rG   r   s       r   rG   %ErrorRaisingArgumentParser.parse_args   s%    5tG
%jB4B6BBr   c                 >   > [         [        U ]
  n[        U/UQ70 UD6$ r^   )r   r   r;   r   )r   r   r   r;   r   s       r   r;   ErrorRaisingArgumentParser.exit   s%    /;%d<T<V<<r   c                 >   > [         [        U ]
  n[        U/UQ70 UD6$ r^   )r   r   errorr   )r   r   r   r   r   s       r   r    ErrorRaisingArgumentParser.error   s%    0$=%e=d=f==r   r#   )	r&   r'   r(   r)   rG   r;   r   r+   r,   r-   s   @r   r   r      s    C=> >r   r   c                       \ rS rSrSrS rSrg)ParserTesterMetaclass   aQ  Adds parser tests using the class attributes.

Classes of this type should specify the following attributes:

argument_signatures -- a list of Sig objects which specify
    the signatures of Argument objects to be created
failures -- a list of args lists that should cause the parser
    to fail
successes -- a list of (initial_args, options, remaining_args) tuples
    where initial_args specifies the string args to be parsed,
    options is a dict that should match the vars() of the options
    parsed out of initial_args, and remaining_args should be any
    remaining unparsed arguments
c                    US:X  a  g [        U S5      (       d  [        5       U l        [        U S5      (       d  [        U l        S nS nS nS nS n " S	 S
[
        5      n	XEU4 H  n
Xx4 H  nU	" X
U5        M     M     g )NParserTestCaseparser_signatureparser_classc                 b    U H)  nU R                   " UR                  0 UR                  D6  M+     g)z(Add all arguments directly to the parserN)add_argumentr   r   )r=   argument_signaturessigs      r   	no_groups1ParserTesterMetaclass.__init__.<locals>.no_groups   s'    *##SXX<< +r   c                     U R                  S5      nU H)  nUR                  " UR                  0 UR                  D6  M+     g)z4Add all arguments under a single group in the parserr3   N)add_argument_groupr   r   r   )r=   r   groupr   s       r   	one_group1ParserTesterMetaclass.__init__.<locals>.one_group   s7    --e4E*""CHH;

; +r   c                     [        U5       H?  u  p#U R                  SU-  5      nUR                  " UR                  0 UR                  D6  MA     g)z0Add each argument in its own group to the parserzfoo:%iN)	enumerater   r   r   r   )r=   r   ir   r   s        r   many_groups3ParserTesterMetaclass.__init__.<locals>.many_groups   sC    #$7811(Q,?""CHH;

; 9r   c                 $    U R                  U5      $ )z#Parse the args by passing in a list)rG   )r=   r   s     r   listargs0ParserTesterMetaclass.__init__.<locals>.listargs   s    $$T**r   c                     [         R                  nUS   /U-   [         l         U R                  5       U[         l        $ ! U[         l        f = f)z(Parse the args by defaulting to sys.argvr   )r   argvrG   )r=   r   old_sys_argvs      r   sysargs/ParserTesterMetaclass.__init__.<locals>.sysargs   s>    88L$Q(4/CH(((*'<s	   ? Ac                   ,    \ rS rSrS rS rS rS rSrg)0ParserTesterMetaclass.__init__.<locals>.AddTests   c                 F   X l         X0l        U R                   R                  nU R                  R                  nU R                  U R                  4 H=  nUR                  nXtU4nSR                  U5      n	U4S jn
 Xl        [        XU
5        M?     g ! [         a     Nf = f)N_c                     U" U 5        g r^   r#   r   	test_funcs     r   wrapperJParserTesterMetaclass.__init__.<locals>.AddTests.__init__.<locals>.wrapper  	    !$r   )_add_arguments_parse_argsr&   test_failurestest_successesrl   	TypeErrorr   )r   
tester_clsadd_argumentsrG   add_arguments_nameparse_args_namer   	func_namenames	test_namer   s              r   r   9ParserTesterMetaclass.__init__.<locals>.AddTests.__init__   s    &3##- %)%8%8%A%A""&"2"2";";"&"4"4d6I6I!JI ) 2 2I%?JE #I09 (+4( J7; "K % s   <B
B B c                     UR                   R                  nUR                   R                  nUR                  " U0 UD6nU R	                  XAR
                  5        U$ r^   )r   r   r   r   r   r   )r   testerr   r   r=   s        r   _get_parser<ParserTesterMetaclass.__init__.<locals>.AddTests._get_parser  sR    ..330077,,d=f=##F,F,FGr   c                 >   U R                  U5      nUR                   HY  nUR                  5       nUR                  US9   UR	                  [
        US9   UR                  U5        S S S 5        S S S 5        M[     g ! , (       d  f       N= f! , (       d  f       M~  = f)Nr   )msg)r  failuressplitrH   assertRaisesr   rG   )r   r  r=   args_strr   s        r   r   >ParserTesterMetaclass.__init__.<locals>.AddTests.test_failures  s}    ))&1 &H#>>+DT2#001D$0O"--d3 P 32 !0 PO 32s$    BA<'B<
B
B
B	c                 2   U R                  U5      nUR                   Hd  u  p4[        U[        5      (       a  UR	                  5       nUR                  US9   U R                  X#5      nUR                  XE5        S S S 5        Mf     g ! , (       d  f       Mx  = f)Nr  )r  	successesr   strr  rH   r   assertEqual)r   r  r=   r   expected_ns	result_nss         r   r   ?ParserTesterMetaclass.__init__.<locals>.AddTests.test_successes"  sz    ))&1)/)9)9%D!$,,#zz|T2$($4$4V$B	**;B 32 *: 32s   #B
B	)r   r   N)	r&   r'   r(   r)   r   r  r   r   r+   r#   r   r   AddTestsr      s    <&4Cr   r  )hasattrr   r   r   r   object)clsrt   basesbodydictr   r   r   r   r   r  r   rG   s               r   r   ParserTesterMetaclass.__init__   s    ## s.//#&5C sN++9C
	=
	<	<	+	(+	Cv +	C^ (K@M'1
Z8 2 Ar   r#   N)r&   r'   r(   r)   r*   r   r+   r#   r   r   r   r      s    a9r   r   r   c            	       |    \ rS rSrSr\" S5      /r/ SQrS\" SS94S\" S	S94S
\" S	S94S\" SS94S\" SS94/r	Sr
g)TestOptionalsSingleDashi8  1Test an Optional with a single-dash option string-x)r   a--foo-x --fooz-x -yr$   Nx-x ar!  -xaz-x -1-1z-x-1r#   r&   r'   r(   r)   r*   r   r   r
  r   r  r+   r#   r   r   r  r  8  sY    ;t9+8H	R$Z	c	S		"t*	dIr   r  c                   (   \ rS rSrSr\" SSS9\" SSSS	9\" S
5      /r/ SQrS\" SSSS94S\" SSSS94S\" SSSS94S\" SSSS94S\" SSSS94S\" SSSS94S\" SSSS94S\" SSSS94S\" SSSS94S\" SSSS94S\" SSSS94S\" SSSS94/r	Sr
g)TestOptionalsSingleDashCombinediF  r  r   
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+  r+  F  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            	       |    \ rS rSrSr\" S5      /r/ SQrS\" SS94S\" S	S94S
\" SS94S\" S	S94S\" S	S94/r	Sr
g)TestOptionalsSingleDashLongi`  zATest an Optional with a multi-character single-dash option string-foo)r;  r!  r"  z
-foo --fooz-foo -y-fooar$   Nr3   z-foo ar!  z-foo -1r(  z-fo a-f ar#   r)  r#   r   r   r:  r:  `  sY    Kv;-GH	RD\	2#;	B4L!	"+	Ir   r:  c                       \ rS rSrSr\" S5      \" S5      \" S5      /r/ SQrS\" SSSS	94S
\" SSSS	94S\" SSSS	94S\" SSSS	94S\" SSSS	94S\" SSSS	94S\" SSSS	94/r	Sr
g)&TestOptionalsSingleDashSubsetAmbiguousin  z=Test Optionals where option strings are subsets of each other-f-foobar-foorab)rA  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@  r@  n  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                      \ rS rSrSr\" S5      \" S5      /r/ SQrS\" SSS94S	\" S
SS94S\" S
SS94S\" SS
S94S\" SS
S94S\" S
SS94S\" S
SS94S\" SS
S94S\" SS
S94S\" S
SS94S\" S
SS94S\" SS
S94S\" SS
S94/r	Sr
g) TestOptionalsSingleDashAmbiguousi~  z7Test Optionals that partially match but are not subsetsrB  rC  )	rA  r>  rI  rJ  r;  rD  rE  z-f=az-foo=br$   N)rG  rH  z-foob ar!  z-foob=az-foor az-foor=az-fooba az-fooba=az-foora az-foora=arM  z	-foobar=arN  z	-foorab=ar#   r)  r#   r   r   rP  rP  ~  s    Ay>3y>:"H 
RtD)*	Bc$/0	Bc$/0	Bd3/0	Bd3/0	Rs401	Rs401	RtC01	RtC01	bD12	bD12	bS12	bS12Ir   rP  c                   l    \ rS rSrSr\" SSS9/r/ SQrS\" SS	94S
\" SS	94S\" SS	94S\" SS	94/r	Sr
g)TestOptionalsNumerici  z(Test an Optional with a short opt stringr(  onedest)r(  r!  z-1 --fooz-1 -yz-1 -1z-1 -2r$   N)rS  z-1 ar!  z-1az-1-2-2r#   r)  r#   r   r   rR  rR    sQ    2t%01AH	RD\		s		Ir   rR  c            	       |    \ rS rSrSr\" S5      /r/ SQrS\" SS94S\" S	S94S
\" S	S94S\" SS94S\" SS94/r	Sr
g)TestOptionalsDoubleDashi  z1Test an Optional with a double-dash option stringr"  )r"  rA  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   rX  rX    sY    ;w<.FH	RD\	B3K 	B3K 	rf~&	rf~&Ir   rX  c                       \ rS rSrSr\" SSS9\" S5      /r/ SQrS\" S	S
S94S\" S	SS94S\" SS
S94S\" SS
S94S\" SS
S94S\" SS
S94/r	Sr
g
)#TestOptionalsDoubleDashPartialMatchi  z7Tests partial matching with a double-dash option string--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   rZ  rZ    s    A 	J|,G HH	Ru$'(	Be-.	"Dd+,	2Tt,-	Bd-.	Rt./Ir   rZ  c                       \ rS rSrSr\" SSS9\" S5      /r/ SQrS\" S	S
S94S\" S	SS94S\" S	SS94S\" SS
S94S\" SS
S94S\" SS
S94S\" SS
S94/r	Sr
g
)"TestOptionalsDoubleDashPrefixMatchi  z?Tests when one double-dash option string is a prefix of anotherr[  r,  r-  r^  )r\  r]  r^  r_  r`  r$   FN)ra  baz--ba Xrc  z--ba=Xrd  Tre  rf  r#   r)  r#   r   r   rh  rh    s    I 	J|,F >H	Ru&'	2Us+,	2Us+,	"DT*+	2Td+,	Bdt,-	Rt-.Ir   rh  c                       \ rS rSrSr\" SSS9\" S5      \" SSS	S
9/r/ SQrS\" SSSS94S\" SSSS94S\" SSSS94S\" SSSS94S\" SSS	S94S\" SSS	S94/r	Sr
g)TestOptionalsSingleDoubleDashi  z<Test an Optional with single- and double-dash option stringsrA  r,  r-  r\  -bazr/  r0  r1  )r\  -fbarz-fbazz-bazf-b BBr$   FNrF  barbazTz--ba Bro  z
-f --bar Bz-f -bz-ba -fr#   r)  r#   r   r   rk  rk    s    F 	D&GF=3
 AH	R%Tt,-	rDd-.	23D12	rDct45	"t2./	2$B/0Ir   rk  c                       \ rS rSrSr\" SSS9r\" SSS9\" S	5      \" S
SSS9/r/ SQrS\	" SSSS94S\	" SSSS94S\	" SSSS94S\	" SSSS94S\	" SSSS94S\	" SSSS94/r
Srg)!TestOptionalsAlternatePrefixCharsi  z9Test an Optional with option strings with custom prefixes+:/Fprefix_charsadd_help+fr,  r-  ::bar/bazr/  r0  r1  )r\  rm  rn  ro  rA  --bar Brl  rA   --helpz+hz::helpz/helpr$   Nrp  T::ba Bro  
+f ::bar B+f /b/ba +fr#   r&   r'   r(   r)   r*   r   r   r   r
  r   r  r+   r#   r   r   rt  rt    s    C>D&GF=3
 qH	R%Tt,-	rDd-.	23D12	rDct45	"t2./	2$B/0Ir   rt  c                       \ rS rSrSr\" SSS9r\" SSS9\" S	5      \" S
SSS9/r/ SQrS\	" SSSS94S\	" SSSS94S\	" SSSS94S\	" SSSS94S\	" SSSS94S\	" SSSS94/r
Srg)*TestOptionalsAlternatePrefixCharsAddedHelpi  zWhen ``-`` not in prefix_chars, default operators created for help
should use the prefix_chars in use rather than - or --
http://bugs.python.org/issue9444ru  Trv  ry  r,  r-  rz  r{  r/  r0  r1  )r\  rm  rn  ro  rA  r|  rl  r$   FNrp  r~  ro  r  r  r  r#   r  r#   r   r   r  r    s    + =D&GF=3
 HH	R%Tt,-	rDd-.	23D12	rDct45	"t2./	2$B/0Ir   r  c            
           \ rS rSrSr\" SSS9r\" SSS9\" S	SS9\" S
SS9/r/ SQrS\	" SSSS94S\	" SSSS94S\	" SSSS94S\	" SSSS94/r
Srg)2TestOptionalsAlternatePrefixCharsMultipleShortArgsi  z@Verify that Optionals must be called with their defined prefixesz+-Frv  r   r,  r-  z+yz+z)-wz-xyzz+xr8  z+xyzr$   r%  yr5  Tz+y -xz+yz -xr#   Nr  r#   r   r   r  r    s    Ju=D&D&D&
H 
R%5E*+	rDEU+,	"ttu-.	2-.	Ir   r  c            	           \ rS rSrSr\" SSSSSS9/r/ S	QrS
\" SS94S\" SS94S\" SS94S\" SS94S\" SS94/r	Sr
g)TestOptionalsShortLongi)  z<Test a combination of single- and double-dash option strings-v	--verbose-nz--noisyr,  r-  )z--x --verbosez-Nr!  z-v xr$   F)verboseTr#   Nr)  r#   r   r   r  r  )  sn    F 	D+tY|D 4H	R	r$ 	b&'	r$ 	Bt$%Ir   r  c            	           \ rS rSrSr\" S5      \" SSS9/rS/rS\" S	S
S94S\" S
SS94S\" SSS94S\" SSS94/r	Sr
g
)TestOptionalsDesti9  z*Tests various means of setting destinationz	--foo-bar--bazzabbazrT  r!  z--foo-bar frF  N)foo_barr  z--baz ggz--foo-bar h --baz ihr   z--baz j --foo-bar kkjr#   r)  r#   r   r   r  r  9  sf    4{+Sx-HIuH	3t45	BtC01	3s ;<	3s ;<	Ir   r  c                   p    \ rS rSrSr\" S5      \" SSS9/rS/rS\" S	SS
94S\" SSS
94S\" S	SS
94/r	Sr
g	)TestOptionalsDefaultiF  z*Tests specifying a default for an Optionalr   r8  r0  defaultr!  r$   Nr%  r  z-xxr%  z-yyr  r#   r)  r#   r   r   r  r  F  sU    4t9c$&;<uH	R$"	SB 	TS!"Ir   r  c                   R    \ rS rSrSr\" S5      /rSS/rS\" SS94S\" SS94/r	S	r
g)
TestOptionalsNargsDefaultiR  z7Tests not specifying the number of args for an Optionalr   r!  r$   Nr$  r&  r#   r)  r#   r   r   r  r  R  s9    At9+T{H	R$Z	cIr   r  c                   R    \ rS rSrSr\" SSS9/rSS/rS\" SS	94S
\" S/S	94/r	Sr
g)TestOptionalsNargs1i]  z&Tests specifying 1 arg for an Optionalr      nargsr!  r$   Nr$  r&  r#   r)  r#   r   r   r  r  ]  s?    0t1-.T{H	R$Z	seIr   r  c                   T    \ rS rSrSr\" SSS9/r/ SQrS\" SS	94S
\" / SQS	94/r	Sr
g)TestOptionalsNargs3ih  z'Tests specifying 3 args for an Optionalr      r  )r!  r   r&  -x a ba -xa -x br$   Nr$  z-x a b cr!  bcr#   r)  r#   r   r   r  r  h  s:    1t1-.>H	R$Z	R/*+Ir   r  c                      \ rS rSrSr\" SSS9\" SSSS9\" S	SS
S9\" SS\SSS9/rS/rS\	" SSS
SS94S\	" SSS
SS94S\	" SSS
SS94S\	" SSS
SS94S\	" SSS
SS94S	\	" SSSSS94S\	" SSSSS94S\	" SSS
SS94S\	" SSS
SS94/	r
Srg)TestOptionalsNargsOptionalis  z0Tests specifying an Optional arg for an Optionalr  ?r  r   r0  )r  r2  r8  spamr  r  r3  4284)r  r   r2  r  2r$   NT   rx   r%  r  r5  z-w 2z-x 2z-y 2z-z 2   r#   r&   r'   r(   r)   r*   r   intr   r
  r   r  r+   r#   r   r   r  r  s  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                       \ rS rSrSr\" SSS9\" SSSS9/rS	/rS
\" SSS94S\" / SS94S\" S	/SS94S\" S	S/SS94S\" S/ S94S\" SS	/S94S\" SS	S/S94/r	Sr
g)TestOptionalsNargsZeroOrMorei  ?Tests specifying args for an Optional that accepts zero or morer   *r  r8  r  r  r!  r$   Nr  r&  r  r  -y a-y a br#   r)  r#   r   r   r  r    s    I 	DDV, uH	R$&!"	rB&!"	sev&'	2c
f-.	rDB 	dse$%	2c
+,Ir   r  c            
           \ rS rSrSr\" SSS9\" SSSS9/r/ S	QrS
\" SSS94S\" S/SS94S\" SS/SS94S\" SS/S94S\" SSS/S94/r	Sr
g)TestOptionalsNargsOneOrMorei  z>Tests specifying args for an Optional that accepts one or morer   +r  r8  r  r  )r!  r   r8  r  za -y br$   Nr  r&  r!  r  r  r  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                       \ rS rSrSr\" SSS9\" S\\" S5      S9/r/ S	Qr	S
\
" SSS94S\
" SSS94S\
" SSS94S\
" SSS94S\
" SSS94S\
" SSS94/rSrg)TestOptionalsChoicesi  z,Tests specifying the choices for an OptionalrA  abcchoicesz-g   r   r  )r!  z-f dz-f abz-fadz-gaz-g 6r$   N)rF  r  r>  r!  z-f cr  z-g 0r   z-g 03r  z-fb -g4r     r#   r&   r'   r(   r)   r*   r   r  ranger   r
  r   r  r+   r#   r   r   r  r    s    6 	D% DsE!H-/ =H	R$$ 	cT"#	cT"#	da!	"tq/"	BN#Ir   r  c                   R    \ rS rSrSr\" S\SS9/rSS/rS\	" S	S
94S\	" SS
94/r
Srg)TestOptionalsRequiredi  z)Tests an optional action that is requiredr   Tr   requiredr!  r$   -x 1r  r$  z-x42r0  r#   Nr  r#   r   r   r  r    sE    3 	DsT* RyH	a	bIr   r  c                   P    \ rS rSrSr\" SSS9/rSS/rS\" S	S
94S\" SS
94/r	Sr
g	)TestOptionalsActionStorei  z&Tests the store action for an Optionalr   storer-  r!  r  r$   Nr$  z-xfoor3   r#   r)  r#   r   r   r  r    s=    0tG45V}H	R$Z	"u+Ir   r  c                   P    \ rS rSrSr\" SS\S9/rS/rS\	" SS	94S\	" \S	94/r
S
rg)TestOptionalsActionStoreConsti  z,Tests the store_const action for an Optionalr8  r/  r1  r!  r$   Nr  r#   )r&   r'   r(   r)   r*   r   r  r   r
  r   r  r+   r#   r   r   r  r    s=    6tMHIuH	R$Z	rF|Ir   r  c                   P    \ rS rSrSr\" SSS9/r/ SQrS\" SS	94S\" S
S	94/r	Sr
g)TestOptionalsActionStoreFalsei  z,Tests the store_false action for an Optionalr3  store_falser-  )r!  r6  r7  r$   T)r5  Fr#   Nr)  r#   r   r   r  r    s9    6tM:;#H	R$Z	rE{Ir   r  c                   P    \ rS rSrSr\" SSS9/r/ SQrS\" SS	94S\" S
S	94/r	Sr
g)TestOptionalsActionStoreTruei  z+Tests the store_true action for an Optionalz--appler,  r-  )r!  z	--apple=bz	--apple br$   F)appleTr#   Nr)  r#   r   r   r  r    s9    5y>?.H	Re_	BTN#Ir   r  c            	           \ rS rSrSr\" S\R                  S9/rSS/r	S\
" SS	94S\
" S
S	94S\
" SS	94S\
" SS	94S\
" S
S	94/rS rS rSrg)TestBooleanOptionalActioni  zTests BooleanOptionalActionr"  r-  	--foo bar	--foo=barr$   Nr=  T--no-fooFz--foo --no-fooz--no-foo --fooc                    [         R                  " 5       nU R                  [        5       nUR	                  SS[         R
                  S9  S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nr"  Tr2  r.  z*got an unexpected keyword argument 'const')	r6   r7   r  r   r   BooleanOptionalActionassertInr  	exceptionr   r=   cms      r   
test_const$TestBooleanOptionalAction.test_const  sc    ((*y)RtH<Z<Z[ * 	BCDUV *)s    A99
Bc                    [         R                  " 5       nU R                  [        5         UR	                  S[         R
                  S S9  S S S 5        U R                  [        5         UR	                  S[         R
                  [        S9  S S S 5        U R                  [        5         UR	                  S[         R
                  S S9  S S S 5        U R                  [        5         UR	                  S[         R
                  SS9  S S S 5        U R                  [        5         UR	                  S[         R
                  S S	9  S S S 5        U R                  [        5         UR	                  S
[         R
                  SS	9  S S S 5        g ! , (       d  f       GNE= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)N-a)r.  r   -b-c)r.  metavar-dd-e)r.  r  rA  r#   )r6   r7   assertWarnsDeprecationWarningr   r  boolr<   s     r   test_deprecated_init_kw1TestBooleanOptionalAction.test_deprecated_init_kw  s   ((*0155    2 0155    2 0155    2 0155    2 0155    2 0155    21A 21 21 21 21 21 21sG    F	($F) F-& F># G  G 	
F
F*-
F;>
G
G 
G.r#   )r&   r'   r(   r)   r*   r   r6   r  r   r
  r   r  r  r  r+   r#   r   r   r  r    ss    %wx/M/MNO[)H	RD\	",	RE]#	2%=)	2$<(IW)r   r  c                   d    \ rS rSrSr\" SS\R                  S9/rS/r	S\
" SS94S\
" S	S94/rS
rg)!TestBooleanOptionalActionRequiredi7  z$Tests BooleanOptionalAction requiredr"  T)r  r.  r$   r=  r  Fr#   N)r&   r'   r(   r)   r*   r   r6   r  r   r
  r   r  r+   r#   r   r   r  r  7  sI    . 	Gd8+I+IJ tH	",	RE]#Ir   r  c                   d    \ rS rSrSr\" SSS9/r/ SQrS\" SS	94S
\" S/S	94S\" SS/S	94/r	Sr
g)TestOptionalsActionAppendiC  'Tests the append action for an Optionalr  appendr-  r!  r  a --baz	--baz a br$   Nrr  --baz ar!  --baz a --baz br  r#   r)  r#   r   r   r  r  C  sL    1wx895H	RD\	BC5M"	BC:./Ir   r  c                   l    \ rS rSrSr\" SSS/S9/r/ SQrS\" S/S	94S
\" SS/S	94S\" / SQS	94/r	Sr
g)$TestOptionalsActionAppendWithDefaultiO  r  r  r  rc  r.  r  r   r$   r  r  r!  r  )rc  r!  r  r#   Nr)  r#   r   r   r  r  O  sQ    1wx#GH5H	RSE]	BC:&'	B?34Ir   r  c                       \ rS rSrSr\" SSS9\" SSS9\" SSS9\" S	SS9/r/ S
QrS\" SSSSS94S\" S/SSSS94S\" SS/SSS94S\" SSSSS94S	\" SSSSS94/r	Sr
g)!TestConstActionsMissingConstKwargi[  z=Tests that const gets default value of None when not providedrA  append_constr-  r"  r  r/  r\  )z-f vr  r  r$   N)rF  r3   r  rq  r#   r)  r#   r   r   r
  r
  [  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            	       x    \ rS rSrSr\" SS\S9\" SSSS	9/r/ S
QrS\	" SS94S\	" \/S94S\	" \S\S/S94/r
Srg)TestOptionalsActionAppendConstin  -Tests the append_const action for an Optionalr  r  r1  r  r  r  r.  rU  r!  r  za -cz-bxz-b xr$   Nr  -b -cx -b -cyzr%  yzr#   r&   r'   r(   r)   r*   r   r   r   r
  r   r  r+   r#   r   r   r  r  n  sf    7 	Dy9D, 2H	R$Z	rYK !	2CD ABCIr   r  c            
           \ rS rSrSr\" SS\S/S9\" SSS	S
9/r/ SQrS\	" S/S94S\	" S\/S94S\	" S\S\S/S94/r
Srg))TestOptionalsActionAppendConstWithDefaulti}  r  r  r  rc  )r.  r2  r  r  r  r  r  r  r$   r  r  r%  r  r#   Nr  r#   r   r   r  r  }  sq    7 	Dy3%HD, 2H	R3%[	rS)$%&	2ii FGHIr   r  c                   P    \ rS rSrSr\" SSS9/r/ SQrS\" SS	94S\" S
S	94/r	Sr
g)TestOptionalsActionCounti  z&Tests the count action for an Optionalr   countr-  )r!  r&  z-x bz	-x a -x br$   Nr$  r  r#   r)  r#   r   r   r  r    s8    0tG451H	R$Z	rAwIr   r  c                       \ rS rSrSr\" S5      \" S5      \" SSS9/rSS	/rS
\" SSSS94S\" SSSS94S\" SSSS94S\" SSSS94S\" SSSS94S\" SSSS94/r	Sr
g)"TestOptionalsAllowLongAbbreviationi  z2Allow long options to be abbreviated unambiguouslyr"  --foobaz--foobler,  r-  z--foob 5--foobr$   NF)r3   foobazfooblez--foo 77z--foo=7z	--fooba ar!  z	--fooba=az--foobl --foo gr  Tr#   r)  r#   r   r   r  r    s    < 	GJJ|,
 H%H	RDe45	B3tE:;	B3tE:;	bT#e<=	bT#e<=	B3tDABIr   r  c            	           \ rS rSrSr\" SS9r\" S5      \" SSS9\" S	5      /r/ S
QrS\	" SSSS94S\	" SSSS94S\	" SSSS94/r
Srg)%TestOptionalsDisallowLongAbbreviationi  1Do not allow abbreviations of long options at allFallow_abbrevr"  --foodler,  r-  --foonly)-foon 3z--foon 3--foodz--food --foo 2r$   Nr3   foodlefoonlyz--foo 33z--foonly 7 --foodle --foo 2r  Tr!  r#   r  r#   r   r   r#  r#    sr    ;.GJ|,J
 CH	RDt45	B3uT:;	&s4(LMIr   r#  c            	           \ rS rSrSr\" SSS9r\" S5      \" SSS	9\" S
5      /r/ SQrS\	" SSSS94S\	" SSSS94S\	" SSSS94/r
Srg)0TestOptionalsDisallowLongAbbreviationPrefixCharsi  zBDisallowing abbreviations works with alternative prefix charactersr  Frw  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!  r#   r  r#   r   r   r0  r0    st    L%@GJ|,J
 CH	RDt45	B3uT:;	&s4(LMIr   r0  c            	           \ rS rSrSr\" SS9r\" S5      \" SSS9\" S	5      /r/ S
QrS\	" SSSS94S\	" SSSS94S\	" SSSS94/r
Srg)/TestOptionalsDisallowSingleDashLongAbbreviationi  r$  Fr%  r;  z-foodler,  r-  z-foonly)r)  z-foodz-food -foo 2r$   Nr+  z-foo 3r.  z-foonly 7 -foodle -foo 2r  Tr!  r#   r  r#   r   r   r3  r3    sq    ;.FIl+I
 4H	RDt45	2#eD9:	#RCS%IJIr   r3  c                       \ rS rSrSr\" SS9r\" S5      \" SSS9/rSS	/rS
\	" SSS94S\	" SSS94S\	" SSS94S\	" SSS94S\	" SSS94S\	" SSS94/r
Srg)/TestDisallowLongAbbreviationAllowsShortGroupingi  r$  Fr%  z-rr  r  r-  z-c -rr$   Nrr  z-rar!  z-rccccz-ccr  z-cc -raz-ccrccr#   r  r#   r   r   r5  r5    s    ;.D	D! gH	R$$ 	SD!"	dd#$	TQ 	BN#	2?#Ir   r5  c                       \ rS rSrSr\" SSS9r\" S5      \" SSS	9/rSS
/rS\	" SSS94S\	" SSS94S\	" SSS94S\	" SSS94S\	" SSS94S\	" SSS94/r
Srg)5TestDisallowLongAbbreviationAllowsShortGroupingPrefixi  zEShort option grouping works with custom prefix and allow_abbrev=Falser  Fr1  z+rz+cr  r-  z+c +rr$   Nr6  z+rar!  z+rccr8  z+ccr  z+cc +raz+ccrccr#   r  r#   r   r   r:  r:    s    O%@D	D! gH	R$$ 	SD!"	dd#$	TQ 	BN#	2?#Ir   r:  c                   <    \ rS rSr " S S\5      rS rS rS rSr	g)	TestStrEnumChoicesi  c                        \ rS rSrSrSrSrSrg)TestStrEnumChoices.Colori  redgreenbluer#   N)r&   r'   r(   r)   REDGREENBLUEr+   r#   r   r   Colorr>    s    r   rE  c                     [         R                  " 5       nUR                  SU R                  S9  UR	                  SS/5      nU R                  UR                  U R                  R                  5        g )N--colorr  r?  )r6   r7   r   rE  rG   r  colorrB  r   r=   r   s      r   test_parse_enum_value(TestStrEnumChoices.test_parse_enum_value	  sX    ((*Itzz:  )U!34TZZ^^4r   c                     [         R                  " 5       nUR                  SU R                  SS9  U R	                  SUR                  5       5        U R	                  SUR                  5       5        g )NrG  zChoose a colorr  helpz[--color {red,green,blue}]z  --color {red,green,blue})r6   r7   r   rE  r  format_usageformat_helpr<   s     r   'test_help_message_contains_enum_choices:TestStrEnumChoices.test_help_message_contains_enum_choices  sZ    ((*Itzz@PQ2F4G4G4IJ2F4F4F4HIr   c                     [         R                  " SS9nUR                  SU R                  S9  U R	                  [         R
                  SUR                  SS/5        g )NFexit_on_errorrG  r  z9invalid choice: 'yellow' \(choose from red, green, blue\)yellow)r6   r7   r   rE  assertRaisesRegexArgumentErrorrG   r<   s     r   $test_invalid_enum_value_raises_error7TestStrEnumChoices.test_invalid_enum_value_raises_error  sT    ((u=Itzz:""H!		
r   r#   N)
r&   r'   r(   r)   r   rE  rJ  rQ  rY  r+   r#   r   r   r<  r<    s     
5J
r   r<  c                   D    \ rS rSrSr\" S5      /r/ SQrS\" SS94/r	Sr
g)	TestPositionalsNargsNonei#  z,Test a Positional that doesn't specify nargsr3   r$   r   a br!  r=  r#   Nr)  r#   r   r   r\  r\  #  s)    6u:, H	bSkIr   r\  c                   D    \ rS rSrSr\" SSS9/r/ SQrS\" S/S94/r	S	r
g
)TestPositionalsNargs1i-  z.Test a Positional that specifies an nargs of 1r3   r  r  r]  r!  r=  r#   Nr)  r#   r   r   r`  r`  -  s/    8uA./ H	bcUmIr   r`  c                   F    \ rS rSrSr\" SSS9/r/ SQrS\" SS	/S
94/r	Sr
g)TestPositionalsNargs2i7  z.Test a Positional that specifies an nargs of 2r3   r  r  )r$   r!  r   a b cr^  r!  r  r=  r#   Nr)  r#   r   r   rb  rb  7  s2    8uA./'H	Sz"#Ir   rb  c                   b    \ rS rSrSr\" SSS9/rS/rS\" / S94S	\" S	/S94S
\" S	S/S94/r	Sr
g)TestPositionalsNargsZeroOrMoreiA  z0Test a Positional that specifies unlimited nargsr3   r  r  r   r$   r=  r!  r^  r  r#   Nr)  r#   r   r   re  re  A  sN    :uC01vH	RBZ	bcUm	Sz"#Ir   re  c                   d    \ rS rSrSr\" SSSS9/rS/rS\" SS	94S
\" S
/S	94S\" S
S/S	94/r	Sr
g)%TestPositionalsNargsZeroOrMoreDefaultiM  z>Test a Positional that specifies unlimited nargs and a defaultr3   r  rq  r  r   r$   r=  r!  r^  r  r#   Nr)  r#   r   r   rg  rg  M  sP    HuC?@vH	RE]	bcUm	Sz"#Ir   rg  c                   V    \ rS rSrSr\" SSS9/rSS/rS\" S/S	94S
\" SS/S	94/r	Sr
g)TestPositionalsNargsOneOrMoreiY  z2Test a Positional that specifies one or more nargsr3   r  r  r$   r   r!  r=  r^  r  r#   Nr)  r#   r   r   ri  ri  Y  sD    <uC01DzH	bcUm	Sz"#Ir   ri  c                   P    \ rS rSrSr\" SSS9/rSS/rS\" S	S
94S\" SS
94/r	Sr
g	)TestPositionalsNargsOptionalid  zTests an Optional Positionalr3   r  r  r   r^  r$   Nr=  r!  r#   r)  r#   r   r   rk  rk  d  s=    &uC01e}H	RD\	bSkIr   rk  c                   R    \ rS rSrSr\" SSSS9/rSS/rS	\" SS
94S\" SS
94/r	Sr
g)#TestPositionalsNargsOptionalDefaultio  z1Tests an Optional Positional with a default valuer3   r  r0  r  r   r^  r$   r=  r!  r#   Nr)  r#   r   r   rm  rm  o  s?    ;uC<=e}H	RBZ	bSkIr   rm  c                   T    \ rS rSrSr\" SS\SS9/r/ SQrS\	" S	S
94S\	" SS
94/r
Srg),TestPositionalsNargsOptionalConvertedDefaultiz  zfTests an Optional Positional with a default value
that needs to be converted to the appropriate type.
r3   r  r  r  r   r  )r   r^  1 2r$   r0  r=  1r  r#   Nr  r#   r   r   ro  ro  z  sE    
 	E35 $H	RBZ	bQiIr   ro  c                   T    \ rS rSrSr\" S5      \" S5      /r/ SQrS\" SSS	94/r	S
r
g)TestPositionalsNargsNoneNonei  z-Test two Positionals that don't specify nargsr3   rq  )r$   r   r!  rc  r^  r!  r  r3   rq  r#   Nr)  r#   r   r   rt  rt    s3    7u:s5z2'H	s$%Ir   rt  c                   T    \ rS rSrSr\" S5      \" SSS9/r/ SQrS\" S	S
/S94/r	Sr
g)TestPositionalsNargsNone1i  z6Test a Positional with no nargs followed by one with 1r3   rq  r  r  )r$   r"  r!  rc  r^  r!  r  ru  r#   Nr)  r#   r   r   rw  rw    s8    @u:s5':;*H	s&'Ir   rw  c                   V    \ rS rSrSr\" SSS9\" S5      /r/ SQrS\" S	S
/SS94/r	Sr
g)TestPositionalsNargs2Nonei  z8Test a Positional with 2 nargs followed by one with noner3   r  r  rq  r$   r"  r!  r^  a b c drc  r!  r  r  ru  r#   Nr)  r#   r   r   ry  ry    s:    BuA.E
;3H	"#s-.Ir   ry  c                   .   \ rS rSrSr\" S5      \" S5      \" SSS9/r/ SQrS	\" S
S	/ S94S\" S
S	S/S94S\" S
S	SS/S94S\" SS	/ S94S\" SS	/ S94S\" SS	S/S94S\" SS	S/S94S\" SS	S/S94S\" SS	SS/S94S\" SS	SS/S94S\" SS	SS/S94/r	Sr
g
)"TestPositionalsNargsNoneZeroOrMorei  z>Test a Positional with no nargs followed by one with unlimitedr   r3   rq  r  r  )r$   r"  
a b -x X cr!  Nr%  r3   rq  r^  r  rc  r  -x X arc  a -x X-x X a ba -x X ba b -x X
-x X a b c
a -x X b c
a b c -x Xr#   r)  r#   r   r   r}  r}    s    Ht9c%j#e32GH*H	b4Sb)*	Ts./	"t3*56	2"-.	2"-.	R#3SE23	R#3SE23	R#3SE23	rCSsCj9:	rCSsCj9:	rCSsCj9:Ir   r}  c                       \ rS rSrSr\" S5      \" S5      \" SSS9/r/ SQrS	\" S
SS/S94S\" S
SSS/S94S\" SSS/S94S\" SSS/S94S\" SSS/S94S\" SSSS/S94S\" SSSS/S94S\" SSSS/S94/r	Sr
g
)!TestPositionalsNargsNoneOneOrMorei  z@Test a Positional with no nargs followed by one with one or morer   r3   rq  r  r  r$   r"  r!  r~  r^  Nr!  r  r  rc  r  r  rc  r  r  r  r  r  r#   r)  r#   r   r   r  r    s    Jt9c%j#e32GH/H	Ts./	"t3*56	R#3SE23	R#3SE23	R#3SE23	rCSsCj9:	rCSsCj9:	rCSsCj9:	Ir   r  c                       \ rS rSrSr\" S5      \" S5      \" SSS9/r/ SQrS	\" S
S	S
S94S\" S
S	SS94S\" SS	S
S94S\" SS	S
S94S\" SS	SS94S\" SS	SS94S\" SS	SS94/r	Sr
g
) TestPositionalsNargsNoneOptionali  z@Test a Positional with no nargs followed by one with an Optionalr   r3   rq  r  r  r$   r"  rc  r!  Nr  r^  r  r  rc  r  r  r  r  r#   r)  r#   r   r   r  r    s    Jt9c%j#e32GH%H	b4Sd+,	Ts,-	2$/0	2$/0	R#3C01	R#3C01	R#3C01Ir   r  c                      \ rS rSrSr\" S5      \" SSS9\" S5      /r/ SQrS	\" S
/ S	S94S\" S
S	/SS94S\" S
S	S/SS94S\" S/ S	S94S\" S/ S	S94S\" SS	/SS94S\" SS	/SS94S\" SS	S/SS94S\" SS	S/SS94/	r	Sr
g
)"TestPositionalsNargsZeroOrMoreNonei  z@Test a Positional with unlimited nargs followed by one with noner   r3   r  r  rq  )r$   r"  r  r  r~  r!  Nr  r^  r  rc  r  r  rc  r  r  r  r  r  r#   r)  r#   r   r   r  r    s    Jt9c%s&;SZHDH	b4RS)*	Tu#./	"t#s56	2-.	2-.	R#C5c23	R#C5c23	rCc3ZS9:	rCc3ZS9:
Ir   r  c                       \ rS rSrSr\" S5      \" SSS9\" S5      /r/ SQrS	\" S
S/SS94S\" S
SS/SS94S\" SS/SS94S\" SS/SS94S\" SS/SS94S\" SSS/SS94S\" SSS/SS94/r	Sr
g
)!TestPositionalsNargsOneOrMoreNonei  zBTest a Positional with one or more nargs followed by one with noner   r3   r  r  rq  )r$   r"  r!  r  r~  r^  Nr!  r  r  rc  r  r  rc  r  r  r  r  r#   r)  r#   r   r   r  r    s    Lt9c%s&;SZH=H	Tu#./	"t#s56	R#C5c23	R#C5c23	R#C5c23	rCc3ZS9:	rCc3ZS9:Ir   r  c                   d    \ rS rSrSr\" SSSS9\" S5      /r/ SQrS	\" SS	S
94S\" S	SS
94/r	Sr
g) TestPositionalsNargsOptionalNonei  zBTest a Positional with an Optional nargs followed by one with noner3   r  r0  r  rq  r  r!  ru  r^  r  r#   Nr)  r#   r   r   r  r    sG    LuC<c%jI%H	bRS!"	s$%Ir   r  c                   j    \ rS rSrSr\" SSS9\" SSS9/r/ SQrS	\" S
S// S94S\" S
S/S/S94/r	Sr
g)TestPositionalsNargs2ZeroOrMorei	  z=Test a Positional with 2 nargs followed by one with unlimitedr3   r  r  rq  r  r$   r"  r!  r^  r!  r  ru  rc  r  r#   Nr)  r#   r   r   r  r  	  sR    GuA.E0EF!H	Szr*+	"#s#/0Ir   r  c                   V    \ rS rSrSr\" SSS9\" SSS9/r/ SQrS	\" S
S/S/S94/r	Sr
g)TestPositionalsNargs2OneOrMorei  z?Test a Positional with 2 nargs followed by one with one or morer3   r  r  rq  r  )r$   r"  r!  r^  rc  r!  r  r  ru  r#   Nr)  r#   r   r   r  r    s?    IuA.E0EF(H	"#s#/0Ir   r  c                   h    \ rS rSrSr\" SSS9\" SSS9/r/ SQrS	\" S
S/SS94S\" S
S/SS94/r	Sr
g)TestPositionalsNargs2Optionali  z7Test a Positional with 2 nargs followed by one optionalr3   r  r  rq  r  )r$   r"  r!  r{  r^  r!  r  Nru  rc  r  r#   r)  r#   r   r   r  r    sP    AuA.E0EF,H	Szt,-	"#s-.Ir   r  c                   |    \ rS rSrSr\" SSS9\" SSS9/rSS	/rS
\" / S
/S94S\" S
/S/S94S\" S
S/S/S94/r	Sr
g)TestPositionalsNargsZeroOrMore1i)  z=Test a Positional with unlimited nargs followed by one with 1r3   r  r  rq  r  r$   r"  r!  ru  r^  r  rc  r  r#   Nr)  r#   r   r   r  r  )  sg    GuC0#e12EFGH	bRcU#$	u3%()	"#s#/0Ir   r  c                   j    \ rS rSrSr\" SSS9\" SSS9/r/ SQrS	\" S
/S/S94S\" S
S/S/S94/r	Sr
g)TestPositionalsNargsOneOrMore1i5  z?Test a Positional with one or more nargs followed by one with 1r3   r  r  rq  r  r  r^  r!  r  ru  rc  r  r#   Nr)  r#   r   r   r  r  5  sR    IuC0#e12EF!H	u3%()	"#s#/0Ir   r  c                   d    \ rS rSrSr\" SSS9\" SSS9/r/ SQrS	\" S
S	/S94S\" S	S/S94/r	Sr
g
)TestPositionalsNargsOptional1i@  z?Test a Positional with an Optional nargs followed by one with 1r3   r  r  rq  r  r  r!  Nru  r^  r  r#   r)  r#   r   r   r  r  @  sL    IuC0#e12EF%H	bTu%&	s&'Ir   r  c                      \ rS rSrSr\" S5      \" S5      \" SSS9\" SS	S9/r/ S
QrS\" SS/ S/S94S\" SSS/S/S94S\" SS/ S/S94S\" SS/ S/S94S\" SS/ S/S94S\" SSS/S/S94S\" SSS/S/S94S\" SSS/S/S94/r	Sr
g)#TestPositionalsNargsNoneZeroOrMore1iK  z=Test three Positionals: no nargs, unlimited nargs and 1 nargsr   r3   rq  r  r  rr  r  r  r^  Nr!  r  r%  r3   rq  rr  rc  r  r  rc  r  r  r  r  r  r#   r)  r#   r   r   r  r  K  s    G 	D	E
EE	 0H	Ts67	"t3%cU;<	R#3BSE:;	R#3BSE:;	R#3BSE:;	rCSse#?@	rCSse#?@	rCSse#?@	Ir   r  c                   <   \ rS rSrSr\" S5      \" S5      \" SSS9\" SS	S9/r/ S
QrS\" SSS/S/S94S\" SSSS/S/S94S\" SSS/S/S94S\" SSS/S/S94S\" SSS/S/S94S\" SSS/S/S94S\" SSSS/S/S94S\" SSSS/S/S94S\" SSSS/S/S94/	r	Sr
g)"TestPositionalsNargsNoneOneOrMore1ia  z?Test three Positionals: no nargs, one or more nargs and 1 nargsr   r3   rq  r  r  rr  r  )r$   r"  r!  r  za b -x X c dza b c -x X drc  Nr!  r  r  r  r{  r  r  rc  r  r~  r  z-x X a b c dza -x X b c dza b c d -x Xr#   r)  r#   r   r   r  r  a  s   I 	D	E
EE	 GH	"t3%cU;<	B3S#JSEBC	rCSse#?@	rCSse#?@	rCSse#?@	rCSse#?@	csc
FG	csc
FG	csc
FG
Ir   r  c                      \ rS rSrSr\" S5      \" S5      \" SSSS9\" S	S
S9/r/ SQrS\" SSSS/S94S\" SSSS/S94S\" SSSS/S94S\" SSSS/S94S\" SSSS/S94S\" SSSS/S94S\" SSSS/S94S\" SSSS/S94/r	Sr
g)!TestPositionalsNargsNoneOptional1ix  z;Test three Positionals: no nargs, optional narg and 1 nargsr   r3   rq  r        ?r  rr  r  r  r  r^  Nr!  r  r  rc  r  r  rc  r  r  r  r  r  r#   r)  r#   r   r   r  r  x  s    E 	D	E
Ee,E	 0H	TsC59:	"t#C59:	R#3Eu=>	R#3Eu=>	R#3Eu=>	rCScu=>	rCScu=>	rCScu=>	Ir   r  c                   r    \ rS rSrSr\" SSS9\" SSSS9/rS	S
/rS\" SSS94S\" SSS94S\" SSS94/r	Sr
g)$TestPositionalsNargsOptionalOptionali  zTest two optional nargsr3   r  r  rq  r0  r  r"  rc  r$   Nru  r!  r^  r  r#   r)  r#   r   r   r  r    se    ! 	EEb) !H	RDb!"	bSb!"	s$%Ir   r  c            	           \ rS rSrSr\" SSS9\" SSS9/rS/rS	\" S
/ S94S\" S/ S94S\" SS/S94S\" SSS/S94/r	Sr
g
)&TestPositionalsNargsOptionalZeroOrMorei  z1Test an Optional narg followed by unlimited nargsr3   r  r  rq  r  r"  r$   Nru  r!  r^  r  rc  r  r#   r)  r#   r   r   r  r    sn    ;uC0#e32GHyH	RDb!"	bSb!"	s&'	"3*-.	Ir   r  c                   x    \ rS rSrSr\" SSS9\" SSS9/rSS	/rS
\" SS
/S94S\" S
S/S94S\" S
SS/S94/r	Sr
g)%TestPositionalsNargsOptionalOneOrMorei  z3Test an Optional narg followed by one or more nargsr3   r  r  rq  r  r$   r"  r!  Nru  r^  r  rc  r  r#   r)  r#   r   r   r  r    sc    =uC0#e32GHG}H	bTu%&	s&'	"3*-.Ir   r  c                   \    \ rS rSrSr\" S\" S5      S9/r/ SQrS\	" SS94S	\	" S	S94/r
S
rg)TestPositionalsChoicesStringi  z&Test a set of single-character choicesr  abcdefgr  r$   r"  r  r  efr!  r  r  r#   N)r&   r'   r(   r)   r*   r   setr   r
  r   r  r+   r#   r   r   r  r    s=    0vs9~>?-H	bcl	bclIr   r  c                   ^    \ rS rSrSr\" S\\" S5      S9/r/ SQr	S\
" SS	94S
\
" SS	94/rSrg)TestPositionalsChoicesInti  zTest a set of integer choicesr     r  r  4r  r  15   r#   Nr  r#   r   r   r  r    s?    'vCrCD-H	baj	rr{Ir   r  c                   X    \ rS rSrSr\" SSS9\" SSSS9/r/ SQrS	\" S
SS//S94/r	Sr
g)TestPositionalsActionAppendi  zTest the 'append' actionr  r  r-  r  r.  r  rz  rc  r!  r  r  r  r#   Nr)  r#   r   r   r  r    sI    " 	F8$F81- 4H	"3c
+,-Ir   r  c                   T    \ rS rSrSr\" SSS9\" SSSS9/r/ SQrS	\" / S
QS94/r	Sr
g)TestPositionalsActionExtendi  zTest the 'extend' actionr  extendr-  r  r  rz  rc  r  r  r#   Nr)  r#   r   r   r  r    s@    " 	F8$F81- 4H	"/*+Ir   r  c            	           \ rS rSrSr\" SSS9\" SSSS	9/rS
S/rS\" SSS94S\" SSS94S\" SSS94S\" SSS94/r	Sr
g)"TestOptionalsNumericAndPositionalsi  z;Tests negative number args when numeric options are presentr%  r  r  z-4r  r,  rU  r.  rV  z-315r$   NFr  r!  Tz-4 ar#   r)  r#   r   r   r  r    ss    E 	CsDs<0 f~H	R$% !	b3% !	rDD!"	cT"#	Ir   r  c            
           \ rS rSrSr\" SSS9\" SSSS	9/rS
/rS\" SSS94S\" SSS94S\" SSS94S\" SSS94S\" SSS94/r	Sr
g)(TestOptionalsAlmostNumericAndPositionalsi  zBTests negative number args when almost numeric options are presentr%  r  r  z-k4r  r,  r  z-k3r$   NFr  rV  r!  Tz-k4 ar#   r)  r#   r   r   r  r    s    L 	CsEL1 wH	R$% !	rDE"#	b3% !	TT"#	"sd#$Ir   r  c                   ~    \ rS rSr\" SSSS9\" S5      /rS/rS\" S	S
//SS94S\" S
//S	S94S\" S	S
//SS94/rSr	g)!TestOptionalsAndPositionalsAppendi
  r3   r  r  r  r.  r\  r;  r^  r!  r  Nru  	--bar a ba b --bar cr  r#   
r&   r'   r(   r)   r   r   r
  r   r  r+   r#   r   r   r  r  
  sj    EX.G xH	c
|./	bseW#./	c
|56Ir   r  c                   x    \ rS rSr\" SSSS9\" S5      /rS/rS\" S	S
/SS94S\" S
/S	S94S\" S	S
/SS94/rSr	g)!TestOptionalsAndPositionalsExtendi  r3   r  r  r  r\  r;  r^  r!  r  Nru  r  r  r  r#   r  r#   r   r   r  r    sd    EX.G xH	Szt,-	bcU,-	Szs34Ir   r  c                       \ rS rSr\" SSS9\" SSSS9/rS/rS	/\" S	S
S94S/\" SS
S94S/\" SS
S94SS	/\" S
S	S94SS/\" S
SS94SS/\" S
SS94S/\" S
SS94S/\" S
SS94/rSr	g
)$TestEmptyAndSpaceContainingArgumentsi$  r%  r  r  r8  z--yyyr  rT  r$   Nr  za badgerz	-a badgerz--yyy=a badgerz--yyy=-a badgerr#   r  r#   r   r   r  r  $  s     	CsD'$ vH
rB$ 
rJ$/0
[D12
R$"%&

	R$*56
	b4;78
	R$*56
	b4;78	Ir   r  c                       \ rS rSr\" SS9r\" SSSSS9\" S	S
\SS9\" SSSS9/rSS/rS\	" SSSS94S\	" SSSS94S\	" SSSS94S\	" SSSS94S\	" SSSS94S\	" SSSS94/r
Srg) TestPrefixCharacterOnlyArgumentsi7  z-+rw  -r%  r  ra  )rU  r  r2  r  r  r0  )rU  r   r  z-+-r5  r,  r  r8  z+ -r$   NFr  z- Xrc  z+ -3Tz- ===z===r#   )r&   r'   r(   r)   r   r   r  r   r
  r   r  r+   r#   r   r   r  r  7  s    -CcH5CcR0EL1
 e}H	R$"&'	b8rU+,	SB%()	dbE*+	TR4()	"ue,-Ir   r  c                       \ rS rSrSr\" SSS9\" SSS9/r/ rS\" S/ S	94S\" / / S	94S
\" S// S	94S\" S/S/S	94S\" SS/S	94S\" / S/S	94S\" S/S/S	94/r	Sr
g)TestNargsZeroOrMoreiJ  r  r   r  r  r  r$   Nr  r&  r!  z	-x a -- br  r  r  r#   r)  r#   r   r   r  r  J  s    It3/S1DEH	R$"	rB"~	ser"#	bC5SE*+	b4C5!"	bSE"#	2#'(Ir   r  c                       \ rS rSrSr\" S5      \" SSS9\" S5      /r/ SQrS	\" S	/ S
S94S\" S	/ SS94S\" S	SS/SS94S\" S	/ SQS
S94S\" S	/ SQS
S94S\" S	/ SQS
S94S\" S	SS/S
S94/r	Sr
g
)TestNargsRemainderiZ  z2Tests specifying a positional with nargs=REMAINDERr%  r  ...r  r3  )r$   r3  z-z Zrc  Nr  z-z Z XZz
-z Z X A BAro  z
X -z Z A B)r3  r  r  ro  z
X A -z Z B)r  r3  r  ro  
X A B -z Z)r  ro  r3  r  z	X Y --fooYr"  r#   r)  r#   r   r   r  r  Z  s    <s8SE%:CIF!H	b3"%&	2rS)*	rCC:56	rC#8DAB	rC#8DAB	rC#8DAB	b33.D9:Ir   r  c                       \ rS rSrSr\" S\S9\" S\SS9\" SS	S
9/r/ SQrS\	" SS/ S94S\	" SS/ S94S\	" SSS/S94S\	" SS/ S94S\	" SS/ S94S\	" SS/ S94S\	" SSS/S94S\	" SSS/S94S\	" SSS/S94S\	" SSS/S94S\	" SSS/S94/r
Srg)TestOptionLikeij  z.Tests options that may or may not be argumentsr   r   z-3r  )r   rU  r5  r  r  )r   z-y2.5r'  z-x -az-x -3z-x -3.5z-3 -3.5z-x -2.5z	-x -2.5 az-3 -.5za x -1z-x -1 az-3 -1 ar$   Nr  z-x 2.5      @z-x 2.5 ar!  z-3.5      ?z-3-.5g      z-3 .5za -3.5za -x 1g      ?z-x 1 az-3 1 ar#   )r&   r'   r(   r)   r*   r   floatr   r
  r   r  r+   r#   r   r   r  r  j  s   8 	DuDu3'Cs
0H
 
R$$"%&	2tr*+	R##/0	dcR()	"ttr*+	"tsb)*	2u-.	b44C5)*	2tu-.	2tu-.	2u-.Ir   r  c                   x   \ rS rSrSr\" SS\\R                  S9\" SS\\R                  S9\" SS	\R                  S
9\" SS\\R                  S9\" SS\\R                  S9/r	/ SQr
S\" 5       4S\" SS94S\" SS/S94S\" SS94S\" SSS94S\" SS/SS94S\" SS94S\" SS94S\" / S94S\" SS/S94/
rS rg)!TestDefaultSuppressi  z%Test actions with suppressed defaultsr3   r  rp  rq  r  r  r,  r  z--qux--quux)r   r!  z1 ar$   rr  r  r=  rq  r  ru  Tr  z1 --bazr3   rr  z	--baz 1 2r3   rq  rr  N)quxz--qux 1)quuxz
--quux 1 2r#   )r&   r'   r(   r)   r*   r   r  r6   SUPPRESSr   r
  r   r  r+   r#   r   r   r  r    s   / 	E30A0ABE30A0ABGL(2C2CDG3S(2C2CDHCc83D3DE "H	RT
	bQi	qqc"#	",	B1$'(	bQQCT23	",	B1I	22;	r1v'Ir   r  c                       \ rS rSrSr\" \R                  S9r\" SSS9\" SSS9\" S	S
S9/r	S/r
S\" 5       4S\" SS94S\" SS/S94S	\" SS94S\" SSS94S\" SS/SS94/rSrg)TestParserDefaultSuppressi  z4Test actions with a parser-level default of SUPPRESSargument_defaultr3   r  r  rq  r  r  r,  r-  r   r$   r!  r=  r^  r  ru  Tr  r  r  r  r  r#   N)r&   r'   r(   r)   r*   r   r6   r  r   r   r
  r   r  r+   r#   r   r   r  r    s    >H,=,=>EEGL)
 vH	RT
	bSk	s&'	",	B3D)*	bSse67Ir   r  c                       \ rS rSrSr\" SS9r\" SSSS9\" S	S
S9\" SSS9\" SSS9/rS/rS\	" SSSSS94S\	" SSSSS94S\	" SS/SSS94S\	" SSSSS94S\	" SSSSS94S\	" SS/SSS94/r
Srg)TestParserDefault42i  z.Test actions with a parser-level default of 42r0  r  	--versionversion1.0r.  r  r3   r  r  rq  r  r  r,  r-  r   r$   )r3   rq  rr  r  r!  r^  r  Tr  r  r#   Nr  r#   r   r   r  r    s    8B/K	59EEGL)	 vH	RBBB34	bSbb"56	s2r:;	"r:;	B3BD"=>	bSserBCIr   r  c                     ^  \ rS rSrSrU 4S jr\" SS9r\" S5      \" S5      \" SS	S
9/r/ SQr	S\
R                  -   rS\" SSS/S94S\" SSSS/S94S\" S\S/S94S\" SS\/S94S\" S\SS/S94S\" SS\S/S94/ SQ\" SSS/S94/r\
R                  (       aL  \
R                  R!                  S5      r\R&                  " \5      r\S\" S\S/S94S\" SS\/S94/-  rS rU =r$ SrS rU =r$ )!TestArgumentsFromFilei  "Test reading arguments from a filec                    > [         [        U ]  5         S[        R                  " U R
                  5      S-   4SSSU R                  S-   4/nU H+  u  p#[        US5       nUR                  U5        S S S 5        M-     g ! , (       d  f       M?  = f)Nhello   
)	recursives   -a
A
@hello)invalids   @no-such-path
undecodablewb)	r   r  rX   rb   fsencoder  r  r{   r|   r   
file_textsrk   textr   r   s        r   rX   TestArgumentsFromFile.setUp  s    #T02bkk$**-56% ,D,,u45

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

4  "! %!!s   A>>
B	@fromfile_prefix_charsr  r%  r  r  r  )r$   r  rc  z@invalidz@missingzhello world!zX YNrc  r  )r!  r%  r  z
X -a A Y Zr  r  @hello XzX @helloz-a B @recursive Y ZzX @recursive Z -a Bro  )r  r$   rc  r  r$      @z@undecodable XzX @undecodabler   r#   )r&   r'   r(   r)   r*   rX   r   r   r   r
  r   FS_NONASCIIr  r   r  TESTFN_UNDECODABLElstripr  rb   fsdecodedecoded_undecodabler+   r,   r-   s   @r   r  r    sP   ,! 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$? kk+6rD,?C5IJrDC4G3HIJ
 	
	
 r   r  c                   |   ^  \ rS rSrSrU 4S jr " S S\5      r\r\	" SS9r
\	" SS	S
9/r/ rS\" / SQS94/rSrU =r$ )TestArgumentsFromFileConverteri  r  c                    > [         [        U ]  5         S/nU H+  u  p#[        US5       nUR	                  U5        S S S 5        M-     g ! , (       d  f       M?  = f)N)r  s   hello world!
r   )r   r  rX   r{   r|   r  s        r   rX   $TestArgumentsFromFileConverter.setUp  sP    ,d9;(

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

4  "! %!!s   A		
A	c                       \ rS rSrS rSrg)>TestArgumentsFromFileConverter.FromFileConverterArgumentParseri   c              #   p   #    UR                  5        H  nUR                  5       (       d  M  Uv   M      g 7fr^   )r  strip)r   arg_lineargs      r   convert_arg_line_to_argsWTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_args  s)     ~~'yy{{	 (s   46r#   N)r&   r'   r(   r)   r  r+   r#   r   r   FromFileConverterArgumentParserr     s    	r   r  r  r  r  r  r  r	  )r  zworld!rc  r  r#   )r&   r'   r(   r)   r*   rX   r   r  r   r   r   r   r
  r   r  r+   r,   r-   s   @r   r  r    sX    ,!*D  3L5Cs H	R234Ir   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestFileTypeRepri  c                 f    [         R                  " S5      nU R                  S[        U5      5        g )Nr7  zFileType('r')r6   FileTyper  reprr   r   s     r   test_rTestFileTypeRepr.test_r  s&      %$t*5r   c                 h    [         R                  " SS5      nU R                  S[        U5      5        g )Nr   r  zFileType('wb', 1)r   r#  s     r   	test_wb_1TestFileTypeRepr.test_wb_1  s)      q),d4j9r   c                 d    [         R                  " SSS9nU R                  S[        U5      5        g )Nr7  latin_1ry   z!FileType('r', encoding='latin_1')r   r#  s     r   test_r_latinTestFileTypeRepr.test_r_latin   s)      y9<d4jIr   c                 f    [         R                  " SSSS9nU R                  S[        U5      5        g )Nrx   big5ignore)rz   errorsz/FileType('w', encoding='big5', errors='ignore')r   r#  s     r   test_w_big5_ignore#TestFileTypeRepr.test_w_big5_ignore$  s.      vhGJd	%r   c                 f    [         R                  " SSSS9nU R                  S[        U5      5        g )Nr7  r  replacer0  z"FileType('r', 1, errors='replace')r   r#  s     r   test_r_1_replace!TestFileTypeRepr.test_r_1_replace)  s+      a	:=tDzJr   r#   N)
r&   r'   r(   r)   r$  r'  r+  r1  r6  r+   r#   r   r   r  r    s    6:J%
Kr   r  c                        \ rS rSrS rS rSrg)StdStreamCompareri2  c                     [         R                  " U5      U l        US:X  a  [        U l        g US:X  a  [
        U l        g [        5       U l        g )Nstdout.bufferstderr.buffer)operator
attrgetterr   r   
backupattrr   r  )r   r   s     r   r   StdStreamComparer.__init__3  s=      **40?"1DO_$1DO$hDOr   c                 n     XR                  [        5      :H  $ ! [         a    XR                  :H  s $ f = fr^   )r   r   AttributeErrorr?  r   s     r   r   StdStreamComparer.__eq__A  s5    	,LL--- 	,OO++	,s    44)r?  r   Nr&   r'   r(   r)   r   r   r+   r#   r   r   r9  r9  2  s    ',r   r9  stdinr   r   zstdin.bufferr;  r<  c                   $    \ rS rSr0 rS rS rSrg)RFileiP  c                     Xl         g r^   rt   r   rt   s     r   r   RFile.__init__S      	r   c                 :   XR                   ;   a  U R                   U   nO.UR                  5       =o R                   U'   UR                  5         [        U[        5      (       d  UR                  S5      nU R                  UR                  s=:H  =(       a    U:H  $ s  $ )Nascii)seenreadcloser   r  r    rt   r   r   r  s      r   r   RFile.__eq__V  sv    II99U#D&+jjl2D99U#KKM$$$;;w'DyyEJJ..$....r   rI  N)r&   r'   r(   r)   rO  r   r   r+   r#   r   r   rG  rG  P  s    D/r   rG  c                   *  ^  \ rS rSrSrU 4S jr\" S\R                  " 5       S9\" S\R                  " S5      S9/r	/ SQr
S	\" S
\" S	5      S94S\" \" S	5      \" S5      S94S\" \" S	5      \" S5      S94S\" \\S94S\" S
\" S5      S94/rSrU =r$ )TestFileTypeRia  8Test the FileType option/argument type for reading filesc                   > [         [        U ]  5         S HP  n[        [        R
                  R                  U R                  U5      SSS9 nUR                  U5        S S S 5        MR     U R                  S5        g ! , (       d  f       Mu  = f)Nru  rx   r   ry   readonly)
r   rU  rX   r{   rb   rk   rl   ra   r|   r   r   	file_namer   r   s      r   rX   TestFileTypeR.setUpd  sp    mT(*'Ibggll4==)<G-04

9%- - ( 	!!*-- -s   A<<
B	r   r  r  r7  )r   r$   znon-existent-file.txtr3   Nr%  r  
-x foo barrq  
bar -x foo-x - -rX  r#   )r&   r'   r(   r)   r*   rX   r   r6   r!  r   r
  r   rG  eq_stdinr  r+   r,   r-   s   @r   rU  rU  a  s    B. 	Dx((*+F**3/0 3H	Te-.	rE%LuU|<=	rE%LuU|<=	2x01	R$U:%678Ir   rU  c                      ^  \ rS rSrSrU 4S jr\" S\R                  " S5      SS9/r	S/r
S	\" \" S
5      S94/rSrU =r$ )TestFileTypeDefaultsiy  z<Test that a file is not created unless the default is neededc                    > [         [        U ]  5         [        [        R
                  R                  U R                  S5      SSS9nUR                  S5        UR                  5         g )Ngoodrx   r   ry   )
r   rb  rX   r{   rb   rk   rl   ra   r|   rQ  )r   r   r   s     r   rX   TestFileTypeDefaults.setUp{  sG    "D/1BGGLL7wO

6

r   r  r7  zno-file.txtr   r  r$   z-c goodrd  )r  r#   )r&   r'   r(   r)   r*   rX   r   r6   r!  r   r
  r   rG  r  r+   r,   r-   s   @r   rb  rb  y  sK    F 	Dx((-}E tHR%-012Ir   rb  c            	         ^  \ rS rSrSrU 4S jr\" S\R                  " S5      S9\" S\R                  " S5      S9/r	SS/r
S	\" S
\" S	5      S94S\" \" S	5      \" S5      S94S\" \" S	5      \" S5      S94S\" \\S94/rSrU =r$ )TestFileTypeRBi  rV  c                    > [         [        U ]  5         S HP  n[        [        R
                  R                  U R                  U5      SSS9 nUR                  U5        S S S 5        MR     g ! , (       d  f       Md  = f)Nru  rx   r   ry   )	r   rh  rX   r{   rb   rk   rl   ra   r|   rY  s      r   rX   TestFileTypeRB.setUp  s`    nd)+'Ibggll4==)<G-04

9%- - (- -s   A++
A:	r   rbr  r  r$   r3   Nr\  r]  rq  r^  r_  r#   )r&   r'   r(   r)   r*   rX   r   r6   r!  r   r
  r   rG  	eq_bstdinr  r+   r,   r-   s   @r   rh  rh    s    B& 	Dx((./F**401 bzH	Te-.	rE%LuU|<=	rE%LuU|<=	2		23	Ir   rh  c                   .    \ rS rSr\" 5       rS rS rSrg)WFilei  c                     Xl         g r^   rI  rJ  s     r   r   WFile.__init__  rL  r   c                    XR                   ;  a_  SnSUR                  ;   a  UR                  S5      nUR                  U5        UR	                  5         U R                   R                  U5        U R                  UR                  :H  $ )NzCheck that file is writable.r  rN  )rO  moder   r|   rQ  addrt   rR  s      r   r   WFile.__eq__  sc    		!1Dejj {{7+KKKKMIIMM% yyEJJ&&r   rI  N)	r&   r'   r(   r)   r  rO  r   r   r+   r#   r   r   rn  rn    s    5D'r   rn  c            
       ,  ^  \ rS rSrSrU 4S jr\" S\R                  " S5      S9\" S\R                  " S5      S9/r	/ SQr
S	\" S
\" S	5      S94S\" S
\" S5      S94S\" \" S	5      \" S5      S94S\" \" S	5      \" S5      S94S\" \\S94/rSrU =r$ )TestFileTypeWi  z8Test the FileType option/argument type for writing filesc                 f   > [         TU ]  5         U R                  S5        U R                  S5        g NrX  writabler   rX   r   r   r   r   s    r   rX   TestFileTypeW.setUp  (    !!*-!!*-r   r   rx   r  r  )r   r$   rX  r3   Nr\  ry  r]  rq  r^  r_  r#   r&   r'   r(   r)   r*   rX   r   r6   r!  r   r
  r   rn  	eq_stdoutr  r+   r,   r-   s   @r   rv  rv    s    B. 	Dx((-.F**3/0 &H	Te-.	R$U:%678	rE%LuU|<=	rE%LuU|<=	2		23Ir   rv  c                      ^  \ rS rSrSrU 4S jr\" S\R                  " S5      S9\" S\R                  " S5      S9/r	/ SQr
S	\" \" S
5      \" S5      S94S\" \\S94/rSrU =r$ )TestFileTypeXi  zATest the FileType option/argument type for writing new files onlyc                 f   > [         TU ]  5         U R                  S5        U R                  S5        g rx  rz  r{  s    r   rX   TestFileTypeX.setUp  r}  r   r   r%  r  r  )r   r$   rX  ry  r]  r3   rq  r\  r_  r#   r~  r-   s   @r   r  r    ss    K. 	Dx((-.F**3/0 2H	rE%LuU|<=	2		23Ir   r  c            	           \ rS rSrSr\" S\R                  " S5      S9\" S\R                  " S5      S9/rSS/r	S\
" S	\" S5      S
94S\
" \" S5      \" S5      S
94S\
" \" S5      \" S5      S
94S\
" \\S
94/rSrg	)TestFileTypeWBi  z?Test the FileType option/argument type for writing binary filesr   r   r  r  r$   r3   Nr\  r]  rq  r^  r_  r#   )r&   r'   r(   r)   r*   r   r6   r!  r   r
  r   rn  
eq_bstdoutr  r+   r#   r   r   r  r    s    I 	Dx((./F**401 bzH	Te-.	rE%LuU|<=	rE%LuU|<=	2
45	Ir   r  c                       \ rS rSrSr\" S\R                  " S5      S9\" S\R                  " S5      S9/rS\	" \
" S5      \
" S	5      S
94S\	" \\S
94/rSrg)TestFileTypeXBi  zHTest the FileType option/argument type for writing new binary files onlyr   xbr  r  r]  r3   rq  r\  r_  r#   N)r&   r'   r(   r)   r*   r   r6   r!  r   r   rn  r  r  r+   r#   r   r   r  r    sh    N 	Dx((./F**401
 
rE%LuU|<=	2
45Ir   r  c                   $    \ rS rSrSrS rS rSrg)TestFileTypeOpenArgsi  z0Test that open (the builtin) is correctly calledc           
      2   [         R                  nU" S5      S4U" SS5      S4U" SSS9S4U" S	S
S9S4U" SSSS5      S4/n[        R                  " S5       nU H   u  pEU" S5        UR                  " S/UQ76   M"     S S S 5        g ! , (       d  f       g = f)Nrk  )rk  NNrx   r  )rx   r  NNr4  r5  )rx   r  Nr4  r   r.  ry   )r   r  r.  Nr   l1strict)rx   r   r  r  zbuiltins.openr3   )r6   r!  r   r:   assert_called_with)r   FTcasesmr   r   s         r   test_open_args#TestFileTypeOpenArgs.test_open_args  s    X-.QZ-.I&(BCv&(@AQh')AB
 ZZ(A#
U$$U2T2 $ )((s   'B
Bc                     U R                  [        5         [        R                  " S5      " S5        S S S 5        g ! , (       d  f       g = f)Nr  z-test)r  
ValueErrorr6   r!  r!   s    r   test_invalid_file_type+TestFileTypeOpenArgs.test_invalid_file_type  s/    z*c"7+ +**s	   <
A
r#   N)r&   r'   r(   r)   r*   r  r  r+   r#   r   r   r  r    s    :3,r   r  c                       \ rS rSrSrS rSrg)!TestFileTypeMissingInitializationi  zl
Test that add_argument throws an error if FileType class
object was passed instead of instance of FileType
c                 6   [         R                  " 5       nU R                  [        5       nUR	                  S[         R
                  S9  S S S 5        U R                  [         R
                  < S3[        WR                  5      5        g ! , (       d  f       NF= f)Nr   r  z: is a FileType class object, instance of it must be passed)	r6   r7   r  r  r   r!  r  r  r  r  s      r   test&TestFileTypeMissingInitialization.test  sq    ((*z*b8+<+<= + 	  #	
 +*s   B


Br#   Nr&   r'   r(   r)   r*   r  r+   r#   r   r   r  r    s    
	
r   r  c                   p    \ rS rSrSr\" S\S9\" S\S9/r/ SQr	S\
" SS	S
94S\
" SSS
94S\
" SSS
94/rSrg)TestTypeCallablei$  z,Test some callables as option/argument types--eggsr  r  )r!  42jz--eggs az	--eggs 2iz--eggs=42 42r0  g      E@)eggsr  z--eggs 2j -- -1.5y               @      z1024.675Ng3333@r#   )r&   r'   r(   r)   r*   r   complexr  r   r
  r   r  r+   r#   r   r   r  r  $  s^    6 	H7#F 5H	$/0	bbt45	RT12Ir   r  c                       \ rS rSrSr " S S\5      r\" S\S9\" S\S9/r/ r	S\
" \" S	5      \" S
5      S94S\
" \" S5      \" S5      S94/rSrg)TestTypeUserDefinedi3  z(Test a user-defined option/argument typec                        \ rS rSrS rS rSrg)TestTypeUserDefined.MyTypei6  c                     Xl         g r^   valuer   r  s     r   r   #TestTypeUserDefined.MyType.__init__8      Jr   c                 `    [        U 5      U R                  4[        U5      UR                  4:H  $ r^   r   r  r   s     r   r   !TestTypeUserDefined.MyType.__eq__;  '    J

+UU[[/IIIr   r  NrD  r#   r   r   MyTyper  6      		Jr   r  r   r  r  r  r  r!  r\  -xf grF  r  r#   N)r&   r'   r(   r)   r*   rO   r  r   r   r
  r   r  r+   r#   r   r   r  r  3  sm    2J J 	DvF  H	2s&+67	"vc{56Ir   r  c                       \ rS rSrSr " S S5      r\" S\S9\" S\S9/r/ rS\	" \" S	5      \" S
5      S94S\	" \" S5      \" S5      S94/r
Srg)TestTypeClassicClassiI  zTest a classic class typec                        \ rS rSrS rS rSrg)TestTypeClassicClass.CiL  c                     Xl         g r^   r  r  s     r   r   TestTypeClassicClass.C.__init__N  r  r   c                 `    [        U 5      U R                  4[        U5      UR                  4:H  $ r^   r  r   s     r   r   TestTypeClassicClass.C.__eq__Q  r  r   r  NrD  r#   r   r   Cr  L  r  r   r  r   r  r  r  r  r!  r\  r  rF  r  r#   N)r&   r'   r(   r)   r*   r  r   r   r
  r   r  r+   r#   r   r   r  r  I  sk    #J J 	DqF H	2#QsV,-	"qvAcF+,Ir   r  c                       \ rS rSrSrS rSrg)TestTypeRegistrationi_  z*Test a user-defined type by registering itc                 v   S n[         R                  " 5       nUR                  SSU5        UR                  SSS9  UR                  SSS9  U R	                  UR                  SR                  5       5      [        S SS	95        U R	                  UR                  S
R                  5       5      [        SSS	95        g )Nc                     SU -  $ )Nzmy_type{%s}r#   strings    r   get_my_type.TestTypeRegistration.test.<locals>.get_my_typed  s     6))r   r   my_typer   r  r  rr  z
my_type{1}r  z-x 1 42zmy_type{42})r6   r7   registerr   r  rG   r  r   )r   r  r=   s      r   r  TestTypeRegistration.testb  s    	* ((*	;7Dy1Ci0**399;7dl3	5**9??+<=lm<	>r   r#   Nr  r#   r   r   r  r  _  s
    4>r   r  c            	           \ rS rSrSr " S S\R                  5      r " S S\R                  5      r\	" SS\\
S	S
9\	" S\\SSS9/r/ rS\" SSS94S\" S	SS94S\" SSS94S\" SSS94/rSrg)TestActionUserDefinediv  z*Test a user-defined option/argument actionc                       \ rS rSrSS jrSrg)$TestActionUserDefined.OptionalActioniy  Nc                 X    U R                   S:X  d   SU R                   -  5       eUS:X  d
   SU-  5       e[        SS9nUS;   a  SUl        OUS	;   a  S
Ul        O[        SU-  5      eXR:X  d   SU< SU< 35       e [        USU5        g ! [         a  n[	        SU-  5      eS nAff = f)Nr  dest: %s-szflag: %s      ?r  )      ?r  r  )       @r  	value: %s	expected , got zopt_action failed: %s)rU  r   ra  AssertionErrorr   r   r   r=   	namespacer  option_stringr  r   s          r   __call__-TestActionUserDefined.OptionalAction.__call__{  s    GyyF*BJ,BB*$,Hj=.HH, !dmN*)*K&e^)+K&(u)<=="/ L3>	3K L/ Ivu- " G)*AA*EFFGs   A;B 
B)B$$B)r#   r^   r&   r'   r(   r)   r  r+   r#   r   r   OptionalActionr  y  s    	.r   r  c                       \ rS rSrSS jrSrg)&TestActionUserDefined.PositionalActioni  Nc                 n    Ub
   SU-  5       eU R                   S:X  d   SU R                   -  5       e[        SS9nUS;   a  SUl        O*US;   a  S	Ul        OUS
;   a  SUl        O[        SU-  5      eXR:X  d   SU< SU< 35       e [        USU5        g ! [         a  n[	        SU-  5      eS nAff = f)Nzoption_string: %sra  r  r  ra  )r0  r  r  )r  r  )r  r  r  r  r  zarg_action failed: %s)rU  r   r  r  r   r   r  s          r   r  /TestActionUserDefined.PositionalAction.__call__  s    G$, >/B/<0= >, yyH,Dj499.DD, !lH$'+K$c\',K$c\',K$(u)<=="/ L3>	3K L/ Ix/ " G)*AA*EFFGs   BB 
B4!B//B4r#   r^   r  r#   r   r   PositionalActionr    s    	0r   r  r  r  r  )rU  r.  r   r  ra  r  r  )r.  r   r  r  z-s0.125r  )r  ra  r  r0  z
-s 0.625 1r  r  z84 -s2r  r  r#   N)r&   r'   r(   r)   r*   r6   Actionr  r  r   r  r  r   r
  r   r  r+   r#   r   r   r  r  v  s    4. .,08?? 04 	Dvn	&H-C	, H	BE!,-	rtB'(	ruQ/0	23r*+	Ir   r  c                   H    \ rS rSrSr " S S\R                  5      rS rSr	g)TestActionRegistrationi  z5Test a user-defined action supplied by registering itc                       \ rS rSrSS jrSrg)TestActionRegistration.MyActioni  Nc                 6    [        X R                  SU-  5        g )Nzfoo[%s])r   rU  )r   r=   r  valuesr  s        r   r  (TestActionRegistration.MyAction.__call__  s    Iyy)f*<=r   r#   r^   r  r#   r   r   MyActionr    s    	>r   r  c                 ,   [         R                  " 5       nUR                  SSU R                  5        UR	                  SSS9  U R                  UR                  S/5      [        SS95        U R                  UR                  S/5      [        S	S95        g )
Nr.  	my_actionra  r-  rr  zfoo[1]r  r  zfoo[42])r6   r7   r  r  r   r  rG   r   r<   s     r   r  TestActionRegistration.test  s{    ((*+t}}=H[9**C512X3FG**D62Bi4HIr   r#   N)
r&   r'   r(   r)   r*   r6   r  r  r  r+   r#   r   r   r  r    s    ?>8?? >
Jr   r  c                   B    \ rS rSr\" SSS\S9/rSrS\" / SQS	94/r	Sr
g
)TestActionExtendi  r"  r  r  )r.  r  r   r#   z--foo f1 --foo f2 f3 f4)f1f2f3f4r=  N)r&   r'   r(   r)   r   r  r   r
  r   r  r+   r#   r   r   r  r    s4    GHCc: H	"B+C$DEIr   r  c                   N    \ rS rSrSr " S S\R                  5      rS rS r	Sr
g)	TestInvalidActioni  z Test invalid user defined Actionc                       \ rS rSrSrg)#TestInvalidAction.ActionWithoutCalli  r#   Nr&   r'   r(   r)   r+   r#   r   r   ActionWithoutCallr    s    r   r  c                     [         R                  " 5       nUR                  SU R                  S9  U R	                  [
        UR                  SS/5        g )Nr"  r-  rq  )r6   r7   r   r  r  NotImplementedErrorrG   r<   s     r   test_invalid_type#TestInvalidAction.test_invalid_type  sG    ((*GD,B,BC-v/@/@7EBRSr   c                     [        5       nUR                  S5      nSUl        U R                  [        UR
                  SS/5        g )Nr"  r  rq  )r   r   r   r  r   rG   r   r=   r.  s      r   test_modified_invalid_action.TestInvalidAction.test_modified_invalid_action  s?    +-$$W--v/@/@7EBRSr   r#   N)r&   r'   r(   r)   r*   r6   r  r  r  r  r+   r#   r   r   r  r    s!    *HOO TTr   r  c                      ^  \ rS rSrSrS r  S"S jrU 4S jrS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S!r#U =r$$ )#TestAddSubparsersi  zTest the add_subparsers methodc                 8    U R                   " [        /UQ70 UD6  g r^   r  r   r   s      r   assertArgumentParserError+TestAddSubparsers.assertArgumentParserError      -???r   c                 d   U(       a&  [        SSUS9nUR                  US   S-  S-   SSS	9  O[        SSS
9nUR                  SSSS	9  UR                  S[        SS9  SS0nU(       a  SUS'   SUS'   OSUS'   UR                  " S50 UD6nU R	                  [
        R                  SUR                  5        [        SS9nU(       a  SUS'   U(       a  SS/US'   UR                  " S60 UD6nUR                  S[        SS9  UR                  S / S!QS"S#9  [        S$S9n	U(       a  S%U	S'   UR                  " S70 U	D6n
U
R                  S&/ S'QS(S#9  U
R                  S)[        S*S+S,9  [        S-S9nU(       a  S.US'   UR                  " S80 UD6nUR                  S/[        S0S9  UR                  S1S2S3S49  U$ )9NPROGmain description)progdescriptionrw  r   r  r3   r,  foo helpr.  rN  r  r  r"  rq  bar helpr   rN  r  FCOMMANDr  commandstitlecommand helprN  z(cannot have multiple subparser argumentsz1 descriptionr  z1 help1alias11alias2aliasesr  w helpr%  r  x helprM  z2 descriptionz2 helpr8  rr  r  r.  y helpr5  r  z help)r   r  rN  z3 descriptionz3 helptzt helpur  zu helpr  rN  r#   rr  )r  )r.  )r   r   r  add_subparsersrW  r6   rX  dict
add_parserr  r  )r   subparser_helprw  r  r=   subparsers_kwargs
subparsersparser1_kwargsparser1parser2_kwargsparser2parser3_kwargsparser3s                r   r  TestAddSubparsers._get_parser  s    /);,XFQ!#e+Lz   S 0);=F:   ?J 	 	0 (/+4i()3g&(6f%**?->?
x55I%44	6
 /:%-N6")2I(>N9%''>~>T(;S/I /:%-N6"''>~>T?JSwcI /:%-N6"''>~>Ss:SH= r   c                 t   > [         TU ]  5         U R                  5       U l        U R                  SS9U l        g )NT)r,  )r   rX   r  r=   command_help_parserr{  s    r   rX   TestAddSubparsers.setUp*	  s2    &&(#'#3#34#3#H r   c                     S H9  nUR                  5       nU R                  U R                  R                  U5        M;     g )N)r$   r!  za az0.5 az0.5 1z0.5 1 -yz0.5 2 -w)r  r  r=   rG   )r   r  r   s      r   test_parse_args_failures*TestAddSubparsers.test_parse_args_failures/	  s4    1H>>#D**4;;+A+A4H1r   c           
      $   U R                  U R                  R                  SR                  5       5      [	        SSSSS95        U R                  U R                  R                  SR                  5       5      [	        SS	S
SS/S95        U R                  U R                  R                  SR                  5       5      [	        SSS SS95        U R                  U R                  R                  SR                  5       5      [	        SSS/ SQS95        g )N0.5 1 b -w 7Fr     r  r3   rq  rx   r%  z0.25 --foo 2 -y 2 3j -- -1jTr  r  y              @y             )r3   rq  r  r5  z--foo 0.125 1 cr  r  z-1.5 3 11 -- a --foo 7 -- br     )r!  r"  r!  --r  )r3   rq  r%  r&  )r  r=   rG   r  r   r!   s    r   test_parse_args!TestAddSubparsers.test_parse_args6	  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           
         U R                  U R                  R                  SR                  5       5      [	        SSSSS9/ 45        U R                  U R                  R                  SR                  5       5      [	        SSSSS9S/45        U R                  U R                  R                  S	R                  5       5      [	        SSSSS9S/45        U R                  U R                  R                  S
R                  5       5      [	        SSSSS9SS/45        U R                  U R                  R                  SR                  5       5      [	        SSSSS9/ SQ45        g )Nr=  Fr  r>  r  r?  z0.5 -p 1 b -w 7-p0.5 1 b -w 7 -pz0.5 1 b -q -rs -w 7z-qz-rsz0.5 -W 1 b -X Y -w 7 Z)z-Wz-Xr  r  )r  r=   parse_known_argsr  r   r!   s    r   test_parse_known_args'TestAddSubparsers.test_parse_known_argsI	  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                 n    " S S5      nU R                  U R                  R                  SR                  5       US9US/45        U R	                  UR
                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S	5        g )
Nc                       \ rS rSrSrg)ETestAddSubparsers.test_parse_known_args_to_class_namespace.<locals>.Ci`	  r#   Nr  r#   r   r   r  rL  `	      r   r  rF  )r  rE  Fr  r>  r  )	r  r=   rG  r  assertIsr3   rq  rx   r%  )r   r  s     r   (test_parse_known_args_to_class_namespace:TestAddSubparsers.test_parse_known_args_to_class_namespace_	  s    	 	KK(():)@)@)Ba(PK	
 	aeeU#$a c"r   c           
         [        5       nUR                  S5        UR                  S5        UR                  5       nUR                  S5      nUR                  S5        UR                  S5        U R	                  UR                  / SQ5      [        SS S S S95        U R	                  UR                  / S	Q5      [        S SS S S95        U R                  UR
                  / S
Q5        U R	                  UR                  / SQ5      [        S S SS S95        U R	                  UR                  / SQ5      [        S S S SS95        U R	                  UR                  / SQ5      [        S S S SS95        U R                  UR
                  / SQ5        g )Nr'  r(  rq  --foz--foonew)r*  rr  rq  rr  )r,  r-  fofoonew)--foonrr  rq  )rR  rr  rq  )rq  rR  rr  )rq  r"  rr  )rq  rU  rr  )rq  r*  rr  )r   r   r)  r+  r  rG   r   r  r   r=   r.  r0  s       r   test_abbreviation#TestAddSubparsers.test_abbreviationk	  se   +-J'J'**,
''.V$Z(**+CD5$tL	N**+CD4$tL	N&&v'8'8:PQ**+AB4tL	N**+BC4eL	N**+CD4eL	N&&v'8'8:RSr   c                    [        5       nUR                  SSSSS9  UR                  SSSSS9  U R                  UR                  SS/5      [	        S	SS
9S/45        U R                  UR                  SS/5      [	        S	SS
9S/45        U R                  UR                  S/5      [	        S	SS
9S/45        U R                  UR                  S/5        U R                  UR                  S/5      [	        SSS
9S/45        U R                  UR                  S/5      [	        SSS
9S/45        U R                  UR                  S/5      [	        S	SS
9S/45        U R                  UR                  S/5        U R                  UR                  S/5      [	        S	SS
9S/45        U R                  UR                  S/5      [	        S	S	S
9S/45        U R                  UR                  S/5        U R                  UR                  S/5        U R                  UR                  S/5        U R                  UR                  S/5      [	        S	S	S
9S/45        g )Nz-kz--knownr  r   r  r  z--newz-ur  )knownnewz-kuz-k=uz-ukz-u=kz	-kunknownz-unknownz
-k=unknownz
-ku=nknownz	-u=nknownz-knewz-ewz-kn=ewz-k-newz-kn-ewz-kne-wz-e-w)r   r   r  rG  r   r  r<   s     r   -test_parse_known_args_with_single_dash_option?TestAddSubparsers.test_parse_known_args_with_single_dash_option	  sR   +-D)GQGD''1E00$>1!,tf5	700$>1!,tf5	700%91!,tf5	7&&v'>'>I00%91!,ug6	800&:1!,vh7	900+?1!,zl;	=&&v'>'>O00,@1!,{m<	>00';1!,ug6	8&&v'>'>
K&&v'>'>
K&&v'>'>
K00(<1!,vh7	9r   c                 
   [        5       nUR                  SSS9  UR                  SS9nUR                  S5      nUR                  S5        U R	                  [        SSS	S
9UR                  SR                  5       5      5        g )Nr"  r,  r-  rq  rT  rr  rr  Fr  r  rq  )r   r   r)  r+  r  r   rG   r  rV  s       r   	test_destTestAddSubparsers.test_dest	  s{    +-GL9***6
'',U#3C8**5;;=9	;r   c                     UR                  S/5      nU R                  UR                  S5        U R                  UR                   S5        g )Nrunr#   )rG   r  commandr  )r   r=   rets      r   _test_required_subparsers+TestAddSubparsers._test_required_subparsers	  s@    (e, 	&&v'8'8"=r   c                     [        5       nUR                  SS9nSUl        UR                  S5        U R	                  U5        g )Nrc  rT  Trb  )r   r)  r  r+  re  r   r=   r.  s      r   &test_required_subparsers_via_attribute8TestAddSubparsers.test_required_subparsers_via_attribute	  sA    +-**	*:
"
e$&&v.r   c                 |    [        5       nUR                  SSS9nUR                  S5        U R                  U5        g )Nrc  TrU  r  rb  )r   r)  r+  re  rh  s      r   "test_required_subparsers_via_kwarg4TestAddSubparsers.test_required_subparsers_via_kwarg	  s;    +-**	D*I
e$&&v.r   c                     [        5       nUR                  SS9nUR                  S5        UR                  S5      nU R	                  UR
                  5        g )Nrc  rT  rb  r#   r   r)  r+  rG   assertIsNonerc  r   r=   r.  rd  s       r    test_required_subparsers_default2TestAddSubparsers.test_required_subparsers_default	  sM    +-**	*:
e$##++&r   c                 F   [        5       nUR                  SS9nUR                  S5        UR                  S5        U R                  [        5       nUR                  S5        S S S 5        U R                  WR                  R                  S5        g ! , (       d  f       N5= f)NTr  r3   rq  r#   z8error: the following arguments are required: {foo,bar}
$	r   r)  r+  r  r   rG   rJ   r  r   r   r=   r.  excinfos       r   -test_required_subparsers_no_destination_error?TestAddSubparsers.test_required_subparsers_no_destination_error	  s    +-**D*9
e$e$23wb! 4$$G	
 43   B
B c                 F   [        5       nUR                  SS9nUR                  S5        UR                  S5        U R                  [        5       nUR                  S5        S S S 5        U R                  WR                  R                  S5        g ! , (       d  f       N5= f)NTrv  r3   rq  r  zLerror: argument {foo,bar}: invalid choice: 'baz' \(choose from foo, bar\)\n$rw  rx  s       r   3test_wrong_argument_subparsers_no_destination_errorETestAddSubparsers.test_wrong_argument_subparsers_no_destination_error	  s    +-**D*9
e$e$23wh' 4$$[	
 43r|  c                     [        5       nUR                  SSS9nUR                  S5        UR                  S5      nU R	                  UR
                  5        g )Nrc  Frl  rb  r#   rp  rr  s       r   test_optional_subparsers*TestAddSubparsers.test_optional_subparsers	  sO    +-**	E*J
e$##++&r   c                     U R                  U R                  R                  5       S5        U R                  U R                  R                  5       [        R
                  " S5      5        g )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  r=   rO  rP  textwrapdedentr!   s    r   	test_helpTestAddSubparsers.test_help	  sQ    113E	G002HOO E 5 	r   c                     U R                  SS9nU R                  UR                  5       S5        U R                  UR                  5       [        R
                  " S5      5        g )Nz+:-r  z)usage: PROG [-h] [++foo] bar {1,2,3} ...
a?              usage: PROG [-h] [++foo] bar {1,2,3} ...

            main description

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

            options:
              -h, --help  show this help message and exit
              ++foo       foo help
            r  r  rO  rP  r  r  r<   s     r   test_help_extra_prefix_chars.TestAddSubparsers.test_help_extra_prefix_chars	  s\    !!u!5,,.E	G++-x @ 0 	r   c                     [        SSS9nUR                  SSSS9  U R                  UR                  5       [        R
                  " S5      5        g )	Nr  r  r  z--non-breakingr  uR   help message containing non-breaking spaces shall not wrap at non-breaking spacesr  u7              usage: PROG [-h] [--non-breaking]

            main description

            options:
              -h, --help      show this help message and exit
              --non-breaking  help message containing non-breaking spaces shall not
                              wrap at non-breaking spaces
        r   r   r  rP  r  r  r<   s     r   test_help_non_breaking_spaces/TestAddSubparsers.test_help_non_breaking_spaces
  s[    +%79]; 	 	< 	++-x 	@ 	0 		r   c                 >   [        SSS9nUR                  SSS9  U R                  UR                  5       [        R
                  " S5      5        [        SSS9nUR                  S/ SS	9  U R                  UR                  5       [        R
                  " S
5      5        g )Nr  r  r  r3   z    rN  z            usage: PROG [-h] foo

            main description

            positional arguments:
              foo         

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

            main description

            positional arguments:
              {}          

            options:
              -h, --help  show this help message and exit
        r  r<   s     r   test_help_blank!TestAddSubparsers.test_help_blank
  s    +%79 	 	 	++-x 	@ 	0 		 ,%792 	 	  	++-x 	@ 	0 		r   c                     U R                  SS9nU R                  UR                  5       S5        U R                  UR                  5       [        R
                  " S5      5        g )Nru  r  z)usage: PROG [+h] [++foo] bar {1,2,3} ...
a?              usage: PROG [+h] [++foo] bar {1,2,3} ...

            main description

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

            options:
              +h, ++help  show this help message and exit
              ++foo       foo help
            r  r<   s     r    test_help_alternate_prefix_chars2TestAddSubparsers.test_help_alternate_prefix_chars;
  s\    !!u!5,,.E	G++-x @ 0 	r   c                     U R                  U R                  R                  5       S5        U R                  U R                  R                  5       [        R
                  " S5      5        g )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  r7  rO  rP  r  r  r!   s    r   test_parser_command_help*TestAddSubparsers.test_parser_command_helpM
  sU    11>>@E	G11==?! * 	r   c                 h   [        SSS9nUR                  SSSS9  UR                  SS	S
9  UR                  SSSS9nUR                  S5      nUR                  S5      nU R	                  UR                  5       S5        U R	                  UR                  5       [        R                  " S5      5        g )Nr  r  r  r"  r,  r  r  rq  r  r  subcommandsr  zadditional text)r  r  rN  rr  r  z'usage: PROG [-h] [--foo] bar {1,2} ...
av              usage: PROG [-h] [--foo] bar {1,2} ...

            main description

            positional arguments:
              bar         bar help

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

            subcommands:
              command help

              {1,2}       additional text
            )	r   r   r)  r+  r  rO  rP  r  r  )r   r=   r.  r0  r2  s        r   test_subparser_title_help+TestAddSubparsers.test_subparser_title_helpb
  s    +8JLGLzJE
3**7E0A + C
 '','',,,.C	E++-x @ 0 	r   c                     U R                  [        5       nU R                  R                  UR	                  5       5        S S S 5        U R                  UWR                  R                  5        g ! , (       d  f       N5= fr^   )r  r   r=   rG   r  r  r  r   )r   r  expected_helpr  s       r   _test_subparser_help&TestAddSubparsers._test_subparser_help
  sT    23rKK""8>>#34 4(;(;< 43s   *A//
A=c                 P    U R                  S[        R                  " S5      5        g )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_help&TestAddSubparsers.test_subparser1_help
  "    !!*hoo ? / 	r   c                 P    U R                  S[        R                  " S5      5        g )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_help&TestAddSubparsers.test_subparser2_help
  r  r   c           
         U R                  SS9nU R                  UR                  SR                  5       5      [	        SSS SS9/ 45        U R                  UR                  SR                  5       5      [	        SSS SS9/ 45        g )	NTr  z0.5 1alias1 bFr  r  r?  z0.5 1alias2 b)r  r  rG  r  r   r<   s     r   test_alias_invocation'TestAddSubparsers.test_alias_invocation
  s    !!$!/##O$9$9$;<Esdc2B7	
 	##O$9$9$;<Esdc2B7	
r   c                 v    U R                  SS9nU R                  UR                  SR                  5       5        g )NTr  z0.5 1alias3 b)r  r  rG   r  r<   s     r   test_error_alias_invocation-TestAddSubparsers.test_error_alias_invocation
  s8    !!$!/&&v'8'8'6'<'<'>	@r   c                     U R                  SSS9nS U l        U R                  UR                  5       [        R
                  " S5      5        g )NT)r  r,  a	              usage: PROG [-h] [--foo] bar COMMAND ...

            main description

            positional arguments:
              bar                   bar help

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

            commands:
              COMMAND
                1 (1alias1, 1alias2)
                                    1 help
                2                   2 help
                3                   3 help
            )r  maxDiffr  rP  r  r  r<   s     r   test_alias_help!TestAddSubparsers.test_alias_help
  sH    !!$t!D++-x @ 0 	r   )r7  r  r=   )FNF)%r&   r'   r(   r)   r*   r  r  rX   r:  rB  rH  rO  rW  r\  r_  re  ri  rm  rs  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r+   r,   r-   s   @r   r  r    s    (@ >B!7rI
I
&
,
#T,98;>//'



'"&$ D$*<=
	
@
 r   r  c                   *    \ rS rSrSrS rS rS rSrg)TestPositionalsGroupsi
  z@Tests that order of group positionals matches construction orderc                    [        5       nUR                  S5        UR                  S5      nUR                  S5        UR                  S5        [        SSSS9nUR	                  S	R                  5       5      nU R                  X45        g )
Nr3   r  rq  rr  rr  r  r.  r  1 2 3)r   r   r   r   rG   r  r  r   r=   r   expectedr   s        r   test_nongroup_first)TestPositionalsGroups.test_nongroup_first
  sv    +-E"))#.5!E"#3C0""7==?3*r   c                    [        5       nUR                  S5      nUR                  S5        UR                  S5        UR                  S5        [        SSSS9nUR	                  S	R                  5       5      nU R                  X45        g )
Nxxxr3   rq  rr  rr  r  r.  r  r  r   r   r   r   rG   r  r  r  s        r   test_group_first&TestPositionalsGroups.test_group_first
  sv    +-))%05!E"E"#3C0""7==?3*r   c                 \   [        5       nUR                  S5      nUR                  S5        UR                  S5        UR                  S5        UR                  S5      nUR                  S5        [        SSS	S
S9nUR	                  SR                  5       5      nU R                  X45        g )Nr  r3   rq  rr  r4  frellrr  r  r.  r  )r3   rq  rr  r  z1 2 3 4r  r  s        r   test_interleaved_groups-TestPositionalsGroups.test_interleaved_groups
  s    +-))%0E"5!E"))%07##3Cs;""9??#45*r   r#   N)	r&   r'   r(   r)   r*   r  r  r  r+   r#   r   r   r  r  
  s    J++
+r   r  c                      ^  \ rS rSrSrS rU 4S jrS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rSrU =r$ )TestParentParsersi
  z5Tests that parsers can be created with parent parsersc                 8    U R                   " [        /UQ70 UD6  g r^   r
  r   s      r   r  +TestParentParsers.assertArgumentParserError
  r  r   c                   > [         TU ]  5         [        SS9U l        U R                  R	                  S5        U R                  R                  S5      nUR	                  S5        U R                  R	                  S5        [        SS9U l        U R                  R	                  S5        U R                  R	                  S5        U R                  R                  S	5      nUR	                  S
5        [        SS9U l        U R                  R	                  S5        [        SS9U l        U R                  R	                  S5        [        SS9U l	        U R                  R                  5       nUR	                  SSS9  UR	                  SSS9  [        R                  R                  [        R                  S   5      U l        g )NFrx  z--wr%  r8  r5  r!  r  r  z--dr  r,  r-  r   )r   rX   r   wxyz_parentr   r   abcd_parentw_parentz_parentab_mutex_parentadd_mutually_exclusive_grouprb   rk   basenamer   r   main_program)r   x_groupc_groupr   r   s       r   rX   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           	          [        U R                  /S9nU R                  UR                  SR	                  5       5      [        SSSS95        g )Nparentsz-y 1 2 --w 3r.  rr  r  rx   r  r5  )r   r  r  rG   r  r   r<   s     r   test_single_parent$TestParentParsers.test_single_parent  sE    +T5E5E4FG**>+?+?+ABcSC0	2r   c                     U R                  U R                  R                  5        [        U R                  /S9nU R                  UR                  5        g Nr  )_test_mutex_abr  rG   r   r<   s     r   test_single_parent_mutex*TestParentParsers.test_single_parent_mutex  sC    D00;;<+T5I5I4JKF--.r   c                 |    U R                   /n[        SUS9n[        U/S9nU R                  UR                  5        g )NF)rx  r  r  )r  r   r  rG   r   r  r=   s      r   test_single_granparent_mutex.TestParentParsers.test_single_granparent_mutex  s<    ''(+UGL+VH=F--.r   c                    U R                  U" / 5      [        SSS95        U R                  U" S/5      [        SSS95        U R                  U" S/5      [        SSS95        U R                  USS/5        U R                  USS/5        U R                  US/5        U R                  USS/5        U R                  USS/5        g )NFr!  r  r  Tr  r  )r  r   r  )r   rG   s     r   r   TestParentParsers._test_mutex_ab%  s    Beu)=>TF+R$%-@ATF+R%4-@A&&zD$<@&&zD$<@&&zD6:&&zD$<@&&zD$<@r   c                     U R                   U R                  /n[        US9nU R                  UR	                  SR                  5       5      [        SS SSS SS95        g )Nr  z--d 1 --w 2 3 4r.  rr  r  r  )r!  r  r  rx   r  r5  )r  r  r   r  rG   r  r   r  s      r   test_multiple_parents'TestParentParsers.test_multiple_parents/  sZ    ##T%5%56+G<**+<+B+B+DEcTSC43G	Ir   c                 b   U R                   U R                  /n[        US9nU R                  UR	                  SR                  5       5      [        SSSS SS95        U R                  UR                  SR                  5       5        U R                  UR                  S	R                  5       5        g )
Nr  z
-a --w 2 3TFr  r.  )r!  r  rx   r  r5  z-a --w 2 3 -bz-a -b --w 2 3)r  r  r   r  rG   r  r   r  r  s      r   test_multiple_parents_mutex-TestParentParsers.test_multiple_parents_mutex5  s    '')9)9:+G<**<+=+=+?@desdcB	D&&446	8&&446	8r   c                     U R                  [        R                  [        R                  U R                  U R
                  /S9  g r  )r  r6   rX  r7   r  r  r!   s    r   test_conflicting_parents*TestParentParsers.test_conflicting_parents?  s9    ""##]]D$4$45 	 	7r   c                     U R                  [        R                  [        R                  U R                  U R
                  /S9  g r  )r  r6   rX  r7   r  r  r!   s    r   test_conflicting_parents_mutex0TestParentParsers.test_conflicting_parents_mutexE  s;    ""##%%t';';< 	 	>r   c           	          U R                   U R                  /n[        US9nU R                  UR	                  SR                  5       5      [        S S SS95        g )Nr  rq  r  r  )r  r  r   r  rG   r  r   r  s      r   test_same_argument_name_parents1TestParentParsers.test_same_argument_name_parentsK  sM    ##T]]3+G<**5;;=9ddc2	4r   c           
         [        5       nUR                  5       nUR                  SU R                  /S9nUR	                  S5        U R                  UR                  SR                  5       5      [        SSSSS	95        g )
Nrq  r  r   zbar -b 1 --d 2 3 4r.  rr  r  r  )r!  r  r  r   )	r   r)  r+  r  r   r  rG   r  r   )r   r=   r.  abcde_parsers       r   test_subparser_parents(TestParentParsers.test_subparser_parentsQ  sw    +-**,
!,,UT=M=M<N,O!!#&**+?+E+E+GHcSC37	9r   c                    [        5       nUR                  5       nU R                  /nUR                  SUS9nUR	                  S5      nUR                  S5        U R                  U R                  /nUR                  SUS9nUR                  S5        U R                  UR                  SR                  5       5      [        SS	S
S95        U R                  UR                  SR                  5       5      [        S	SSS SS
S95        U R                  UR                  SR                  5       5        U R                  UR                  SR                  5       5        g )Nr3   r  r  r  rq  r   zfoo -a 4TFr  r  zbar -b  --w 2 3 4r  r.  )r!  r  rx   r  r5  r   zfoo -a -b 4zbar -b -a 4)r   r)  r  r+  r   r   r  r  rG   r  r   r  )r   r=   r.  r  
abc_parserr  wxyzabe_parsers          r   test_subparser_parents_mutex.TestParentParsers.test_subparser_parents_mutexY  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           	          U R                   U R                  /n[        US9nUR                  5       nU R                  nU R                  U[        R                  " SR                  XD(       a  SOS5      5      5        g )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   rP  r  r  r  r  format)r   r  r=   parser_helpprognames        r   test_parent_help"TestParentParsers.test_parent_helpl  sm    ##T%5%56+G<((*$$hoo 7" F8HS"6#'8 	9r   c           	         [        SS9nUR                  SSS9nUR                  S5        UR                  S5        UR                  5       nUR                  S5        UR                  S	5        [        U/S
9nU R	                  [
        UR                  / SQ5        UR                  5       nU R                  nU R                  U[        R                  " SR                  Xf(       a  SOS5      5      5        g )NFr  r  gdr  r  r  r   r8  r3  r  r8  r  r3  r  z            usage: {}{}[-h] [-w W] [-x X] [-y Y | -z Z]

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

            g:
              gd

              -w W
              -x X
        r  r$   )r   r   r   r  r  r   rG   rP  r  r  r  r  r  )r   parentr  r  r=   r  r  s          r   test_groups_parents%TestParentParsers.test_groups_parents  s    +U;%%CT%B	t	t//1	t	t+VH=-v/@/@"	$ ((*$$hoo 7 F8HS"6'8 	9r   c                 8    U R                  [        [        S/S9  g )Nr  r  )r  r   r   r!   s    r   test_wrong_type_parents)TestParentParsers.test_wrong_type_parents  s    )%?!Mr   c                    [        SS9nUR                  SSS9nUR                  S5        UR                  S5        UR                  5       nUR                  S5        UR                  S	5        [        S
U/S9nU R	                  [
        UR                  / SQ5        UR                  5       nU R                  U[        R                  " S5      5        g )NFr  r  r
  r  r  r   r8  r3  r  )r  r  r  z            usage: PROG [-h] [-w W] [-x X] [-y Y | -z Z]

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

            g:
              gd

              -w W
              -x X
              -y Y
              -z Z
        )r   r   r   r  r  r   rG   rP  r  r  r  )r   r  r  r  r=   r  s         r   test_mutex_groups_parents+TestParentParsers.test_mutex_groups_parents  s    +U;%%CT%B	t	t**,	t	t+&J-v/@/@"	$ ((*hoo 7 ' 	r   )r  r  r  r  r  r  )r&   r'   r(   r)   r*   r  rX   r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r+   r,   r-   s   @r   r  r  
  sd    ?@:82
/
/AI87>496&909<N r   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	 TestMutuallyExclusiveGroupErrorsi  c                 \    [        5       nU R                  nU" [        UR                  SS9  g )Nr3   )r  )r   r  r   r  )r   r=   raisess      r   test_invalid_add_argument_group@TestMutuallyExclusiveGroupErrors.test_invalid_add_argument_group  s'    +-""y&==UKr   c                    [        5       nUR                  5       nUR                  nU R                  nU" [        USSS9  U" [        US5        U" [        USSS9  U" [        USSS9  U" [        US[
        R                  S9  g )Nr"  Trv  rq  r  r  r  )r   r  r   r  r  r6   PARSER)r   r=   r   r   r  s        r   test_invalid_add_argument:TestMutuallyExclusiveGroupErrors.test_invalid_add_argument  sv    +-335))""z<4@z</z<c:z<a8z<hooFr   c                 B   [        SS9nUR                  5       nUR                  SSS9  UR                  SSS9  UR                  5       nUR                  SSS9  UR                  S	SS9  S
nU R                  UR	                  5       [
        R                  " U5      5        g )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  rP  r  r  )r   r=   group1group2r  s        r   r  *TestMutuallyExclusiveGroupErrors.test_help  s    +8446GL9GM:446H\:H];	 	++-xx/HIr   c           	         S U l         [        SS9nUR                  SSS9nUR                  S5      nUR	                  5       nUR                  SS[        R                  S	9  UR                  S
S[        R                  S	9  SnSnUR                  U5        SU SU SU SU S3	nU R                  UR                  5       [        R                  " U5      5        g )Nr  r!  r  rc  )r  rU  r3   r  r,  r  z--quietz--longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglongڀLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGz>            usage: PROG foo [-h]
                            [r  zj]

            options:
              -h, --help            show this help message and exit
              z
              )r  r   r)  r+  r  r   r6   r  r  rP  r  r  )r   r=   r  cmd_foor   longoptlongmetar  s           r   Ctest_help_subparser_all_mutually_exclusive_group_members_suppresseddTestMutuallyExclusiveGroupErrors.test_help_subparser_all_mutually_exclusive_group_members_suppressed  s    +8((z	(J%%e,446;|(BSBST9\@Q@QR"W%%Yaz 2 iq
 # 	,,.0IJr   c                     [         R                  " 5       nUR                  5       nU R                  [        5         UR                  S/5        S S S 5        g ! , (       d  f       g = f)NrA   )r6   r7   r  r  r  rG   r   r=   r   s      r   test_empty_group1TestMutuallyExclusiveGroupErrors.test_empty_group  sH    ((*335z*tf% +**s   A
A%)r  N)
r&   r'   r(   r)   r  r  r  r*  r.  r+   r#   r   r   r  r    s    L
	GJ(K*&r   r  c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)MEMixini  c                     U R                  SS9R                  n[        nU R                   H;  nU R	                  US9   U R                  X!UR                  5       5        S S S 5        M=     g ! , (       d  f       MO  = fNFrv  r  
get_parserrG   r   r
  rH   r  r  r   rG   r   args_strings       r   test_failures_when_not_required'MEMixin.test_failures_when_not_required
  sa    __e_4??
#==K;/!!%[5F5F5HI 0/ )//s   !A,,
A;	c                    U R                  SS9R                  n[        nU R                  S/-    H;  nU R	                  US9   U R                  X!UR                  5       5        S S S 5        M=     g ! , (       d  f       MO  = f)NTrv  r$   r  r4  r6  s       r   test_failures_when_required#MEMixin.test_failures_when_required  sh    __d_3>>
#==B4/K;/!!%[5F5F5HI 0/ 0//s   !A00
A?	c                     U R                  SS9R                  nU R                  U R                  -   nU HD  u  p4U R	                  US9   U" UR                  5       5      nU R                  XT5        S S S 5        MF     g ! , (       d  f       MX  = fr3  )r5  rG   r  successes_when_not_requiredrH   r  r  )r   rG   r  r7  r  	actual_nss         r    test_successes_when_not_required(MEMixin.test_successes_when_not_required  sw    __e_4??
NNT%E%EE	(1$K;/&{'8'8':;	  8 0/ )2//s   	(A>>
B	c                    U R                  SS9R                  nU R                   HD  u  p#U R                  US9   U" UR	                  5       5      nU R                  XC5        S S S 5        MF     g ! , (       d  f       MX  = f)NTrv  r  )r5  rG   r  rH   r  r  )r   rG   r7  r  r?  s        r   test_successes_when_required$MEMixin.test_successes_when_required   sg    __d_3>>
(,$K;/&{'8'8':;	  8 0/ )7//s   (A//
A>	c                     U R                  SS9R                  nU R                  nU R                  U" 5       [        R
                  " U5      5        g NFrv  )r5  rO  usage_when_not_requiredr  r  r  r   rO  expected_usages      r   test_usage_when_not_required$MEMixin.test_usage_when_not_required'  s>    6CC55)HIr   c                     U R                  SS9R                  nU R                  nU R                  U" 5       [        R
                  " U5      5        g NTrv  )r5  rO  usage_when_requiredr  r  r  rH  s      r   test_usage_when_required MEMixin.test_usage_when_required,  s>    5BB11)HIr   c                     U R                  SS9R                  nU R                  U R                  -   nU R	                  U" 5       [
        R                  " U5      5        g rF  )r5  rP  rG  rN  r  r  r  r   rP  rN  s      r   test_help_when_not_required#MEMixin.test_help_when_not_required1  sG    oouo5AA++dii7(=>r   c                     U R                  SS9R                  nU R                  U R                  -   nU R	                  U" 5       [
        R                  " U5      5        g rM  )r5  rP  rN  rN  r  r  r  rR  s      r   test_help_when_requiredMEMixin.test_help_when_required6  sG    ooto4@@''$))3(=>r   r#   N)r&   r'   r(   r)   r8  r;  r@  rC  rJ  rO  rS  rV  r+   r#   r   r   r1  r1    s.    JJ99J
J
?
?r   r1  c            	           \ rS rSrSS jrSS/rS\" SSS94S	\" S
SS94S\" SSS94S\" SS
S94/rS\" SSS94/rSr	Sr
SrSrg)TestMutuallyExclusiveSimplei<  Nc                 z    [        SS9nUR                  US9nUR                  SSS9  UR                  SSS	S
S9  U$ )Nr  r!  rv  r\  r  r  r  r  r  baz help)r  r2  rN  r   r  r   r   r  r=   r   s       r   r5  &TestMutuallyExclusiveSimple.get_parser>  sN    +833X3F747#SzJr   --bar X --baz Yz--bar X --baz--bar Xrc  rq  rr  z--bar X --bar Zr  --baz Yr  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
        r#   r^   r&   r'   r(   r)   r5  r
  r   r  r>  rG  rN  rN  r+   r#   r   r   rY  rY  <  s     "?3H	B3D)*	B3D12	B4S)*	"3'(	I 
RDd#$#Dr   rY  c                       \ rS rSrSS jrS/rS\" SSSSS94S\" S	SSSS94S
\" SSSSS94S\" SS	SSS94/rS\" SSSSS94/rSr	Sr
SrSrg)TestMutuallyExclusiveLongi_  Nc                     [        SS9nUR                  SSS9  UR                  SSS9  UR                  US9nUR                  S	S
S9  UR                  SSS9  U$ )Nr  r!  z--abcdez
abcde helpr  z--fghijz
fghij helprv  z--klmnoz
klmno helpz--pqrstz
pqrst helpr   r   r  r]  s       r   r5  $TestMutuallyExclusiveLong.get_parsera  sp    +8IL9IL933X3F9<89<8r   z--klmno X --pqrst Yz	--klmno Xrc  )abcdefghijklmnopqrstz--abcde Y --klmno Xr  z	--pqrst Xz--pqrst X --fghij Yr$   zi    usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ] [--klmno KLMNO |
                --pqrst PQRST]
    zi    usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ] (--klmno KLMNO |
                --pqrst PQRST)
    z
    options:
      -h, --help     show this help message and exit
      --abcde ABCDE  abcde help
      --fghij FGHIJ  fghij help
      --klmno KLMNO  klmno help
      --pqrst PQRST  pqrst help
    r#   r^   rc  r#   r   r   re  re  _  s     &&H	bt4s$GH	SCt<	>	bt4t3GH	TD<	>I 
Rd$d$?@#Dr   re  c                   t    \ rS rSrS rS/rS\" SSS94S\" S	SS94S
\" SSS94/rS\" SSS94/rSr	Sr
SrSrg)$TestMutuallyExclusiveFirstSuppressedi  c                     [        SS9nUR                  US9nUR                  S[        R                  S9  UR                  SSSS	9  U$ )
Nr  r!  rv  r   r  r8  r  r#  r  r   r  r   r6   r  r]  s       r   r5  /TestMutuallyExclusiveFirstSuppressed.get_parser  sR    +833X3F4h&7&784HEr   z-x X -yz-x Xrc  Tr  z	-x X -x Yr  r8  NFr$   z&        usage: PROG [-h] [-y]
        z$        usage: PROG [-h] -y
        zm
        options:
          -h, --help  show this help message and exit
          -y          y help
        r#   rc  r#   r   r   rn  rn    st     {H	cT"#	b3$'(	rDE"#I 
R$$ #Dr   rn  c            
           \ rS rSrS r/ SQrS\" SSSS94S\" S	S	SS94S
\" S	SSS94S\" SSSS94/rS\" S	SSS94/rS=r	r
SrSrg)#TestMutuallyExclusiveManySuppressedi  c                     [        SS9nUR                  US9nUR                  nU" SS[        R                  S9  U" SS[        R                  S9  U" S	[        R                  S
9  U$ )Nr  r!  rv  --spamr,  r  r[  r  z	--bladderr  rp  )r   r  r=   r   rs  s        r   r5  .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 --spamru  TN)r  ra  bladderr[  Fz--bladder Bro  z--spam --spamr$   z!        usage: PROG [-h]
        P
        options:
          -h, --help  show this help message and exit
        r#   r&   r'   r(   r)   r5  r
  r   r  r>  rN  rG  rN  r+   r#   r   r   rs  rs    s    H 
24d;<	RU5$?@	dC@A	"$tTBC	I 
RU467#5 1Dr   rs  c            
           \ rS rSrS r/ SQrS\" SS/ S94S\" S	S
/ S94S\" S	SS/S94S\" S	S/ SQS94/rS\" S	S/ S94/rSr	Sr
SrSrg)*TestMutuallyExclusiveOptionalAndPositionali  c                     [        SS9nUR                  US9nUR                  SSSS9  UR                  SS	S
9  UR                  SSSS9  U$ )Nr  r!  rv  r"  r,  FOOr  ru  SPAMr  ra  r  BADGERr'  r\  r]  s       r   r5  5TestMutuallyExclusiveOptionalAndPositional.get_parser  sa    +833X3F7<eD8&183X>r   )z--foo --spam Sz
--spam S XzX --foozX Y Z --spam S	--foo X Yr"  TNr3   r  ra  z--spam SFSrc  zX Y Z)rc  r  r  r$   zD        usage: PROG [-h] [--foo | --spam SPAM | badger ...]
        zD        usage: PROG [-h] (--foo | --spam SPAM | badger ...)
        z
        positional arguments:
          badger       BADGER

        options:
          -h, --help   show this help message and exit
          --foo        FOO
          --spam SPAM  SPAM
        r#   rc  r#   r   r   r{  r{    s    H 
"D45	REB78	bUse45	"T/BC	I 
RER01#	Dr   r{  c                       \ rS rSrS r/ SQrS\" SSSSSS94S\" SSSSSS94S	\" SSSSSS94S
\" SSSSSS94S\" SSSSSS94S\" SSSSSS94/rS\" SSSSSS94S\" SSSSSS94S\" SSSSSS94/rS=r	r
SrSrg)#TestMutuallyExclusiveOptionalsMixedi  c                     [        SS9nUR                  SSSS9  UR                  US9nUR                  SSS	S9  UR                  S
SSS9  UR                  SSSS9  UR                  SSSS9  U$ )Nr  r!  r   r,  r!  r  rv  r  a helpr  b helpr8  r#  r  c helprg  r]  s       r   r5  .TestMutuallyExclusiveOptionalsMixed.get_parser  s    +8DHE33X3F48D48DDHE48Dr   )z-a -b-b -cz-a -cz-a -b -cr  TFr!  r  r  r%  r  r  r  z-a -xz-y -bz-x -y -cr$   r   r8  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
        r#   Nry  r#   r   r   r  r    s     7H	rDEUeu=>	rETUeu=>	rEUdeu=>	"tu?@	"u$?@	R%5DDDABI 
R%5EUe<=	rEUetu=>	rEUeu=>#5 1	Dr   r  c                   j    \ rS rSrSS jrSS/rS\" SSS94S	\" SS
S94/rS\" SSS94/rSr	Sr
SrSrg)TestMutuallyExclusiveInGroupi&  Nc                     [        SS9nUR                  SSS9nUR                  US9nUR                  SSS	9  UR                  S
SS	9  U$ )Nr  r!  zTitled groupzGroup descriptionr  rv  r\  r  r  r  r[  )r   r   r  r   )r   r  r=   titled_groupmutex_groups        r   r5  'TestMutuallyExclusiveInGroup.get_parser(  sk    +800 .A 1 C 55x5H 	  z :  z :r   r_  z--baz X --bar Yr`  rc  ra  rb  r  r$   z9        usage: PROG [-h] [--bar BAR | --baz BAZ]
        z9        usage: PROG [-h] (--bar BAR | --baz BAZ)
        z
        options:
          -h, --help  show this help message and exit

        Titled group:
          Group description

          --bar BAR   bar help
          --baz BAZ   baz help
        r#   r^   rc  r#   r   r   r  r  &  si     "#45H	B3D)*	B4S)*I
 
RDd#$#
Dr   r  c                       \ rS rSrS r/ SQrS\" SSSSSS94S	\" S
SSSSS94S\" S
SSSSS94S\" SSSSSS94S\" S
SSSSS94/rS\" S
SSSSS94S\" S
SSSSS94/rS=r	r
SrSrg
)1TestMutuallyExclusiveOptionalsAndPositionalsMixediN  c                     [        SS9nUR                  SSS9  UR                  SSSS	9  UR                  US
9nUR                  SSSS9  UR                  SSSS	9  UR                  SSSS	9  U$ )Nr  r!  r%  r!  r  r8  r,  r#  r  rv  r!  r  r  r'  r  r  r  r  rg  r]  s       r   r5  <TestMutuallyExclusiveOptionalsAndPositionalsMixed.get_parserP  s    +8Ch/DHE33X3F3c948D48Dr   )zX A -br  z-c X AzX Ar  Frc  r  zX -bNTzX -czX A -yzX -y -bzX -yz6        usage: PROG [-h] [-y] [-b] [-c] x [a]
        a   
        positional arguments:
          x           x help
          a           a help

        options:
          -h, --help  show this help message and exit
          -y          y help
          -b          b help
          -c          c help
        r#   ry  r#   r   r   r  r  N  s     -H	SEUcU;<	ddese<=	detse<=	2u=>	B#>?I 
b45ESE:;	deut<=#
5 1Dr   r  c                   6    \ rS rSrS rSrSrSrSrSr	Sr
SrSrg)TestMutuallyExclusiveNestediw  c                 f   [        SS9nUR                  US9nUR                  S5        UR                  S5        [        R                  " 5          [        R
                  " S[        5        UR                  US9nS S S 5        WR                  S5        UR                  S5        [        R                  " 5          [        R
                  " S[        5        UR                  US9nS S S 5        WR                  S	5        UR                  S
5        U$ ! , (       d  f       N= f! , (       d  f       NC= f)Nr  r!  rv  r  r  r/  r  r  r  rA  )r   r  r   warningscatch_warningssimplefilterr  )r   r  r=   r   r#  group3s         r   r5  &TestMutuallyExclusiveNested.get_parser~  s    +833X3F4 4 $$&!!(,>?777JF ' 	D!D!$$&!!(,>?88(8KF ' 	D!D! '&
 '&s   +D:+D"
D"
D0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
        Nr#   )r&   r'   r(   r)   r5  rG  rN  rN  r8  r;  r@  rC  r+   r#   r   r   r  r  w  s8    "
D '+#"&'+$#' r   r  c                   z    \ rS rSrSS jrSS/rS\" SSS94S	\" SSS94S
\" SSS94/rS\" SSS94/rSr	Sr
SrSrg)%TestMutuallyExclusiveOptionalOptionali  Nc                 x    [        SS9nUR                  US9nUR                  S5        UR                  SSS9  U$ )Nr  r!  rv  r"  r\  r  r  r\  r]  s       r   r5  0TestMutuallyExclusiveOptionalOptional.get_parser  sE    +833X3F7#7#.r   --foo X --bar Yz--foo X --bar--foo Xrc  ru  r`  r\  r$   z;        usage: PROG [-h] (--foo FOO | --bar [BAR])
        z;        usage: PROG [-h] [--foo FOO | --bar [BAR]]
        z{
        options:
          -h, --help   show this help message and exit
          --foo FOO
          --bar [BAR]
        r#   r^   ry  r#   r   r   r  r    s|     	H
 
B3D)*	B4S)*	"4()I 
RDd#$#Dr   r  c                   z    \ rS rSrSS jrSS/rS\" SSS	94S
\" SSS	94S\" SSS	94/rS\" SSS	94/rSr	Sr
SrSrg)(TestMutuallyExclusiveOptionalWithDefaulti  Nc                     [        SS9nUR                  US9nUR                  S5        UR                  S[        SS9  U$ )Nr  r!  rv  r"  r\  Trf  r   r  r   r  r]  s       r   r5  3TestMutuallyExclusiveOptionalWithDefault.get_parser  sG    +833X3F7#7t<r   r  z--foo X --bar=r  rc  Tru  r`  z--bar=Fr$   z9        usage: PROG [-h] (--foo FOO | --bar BAR)
        z9        usage: PROG [-h] [--foo FOO | --bar BAR]
        zx
        options:
          -h, --help  show this help message and exit
          --foo FOO
          --bar BAR
        r#   r^   ry  r#   r   r   r  r    s|     	H
 
B3D)*	B4T*+	2$E*+I 
RDd#$#Dr   r  c                   h    \ rS rSrSS jrS/rS\" SSS94S\" SSS94/rS	\" SSS94/rS
r	Sr
SrSrg)*TestMutuallyExclusivePositionalWithDefaulti  Nc                     [        SS9nUR                  US9nUR                  S5        UR                  SS[        SS9  U$ )	Nr  r!  rv  r"  rq  r  Trp  r  r]  s       r   r5  5TestMutuallyExclusivePositionalWithDefault.get_parser  sI    +833X3F7#5$Er   r  r  rc  Tru  r$   z3        usage: PROG [-h] (--foo FOO | bar)
        z3        usage: PROG [-h] [--foo FOO | bar]
        z
        positional arguments:
          bar

        options:
          -h, --help  show this help message and exit
          --foo FOO
        r#   r^   ry  r#   r   r   r  r    sj     	H 
B3D)*	bTt$%I
 
RDd#$#Dr   r  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )MEPBasei  c                 V   > [         [        U ]  US9n[        UR                  SU/S9nU$ )Nrv  F)r  rx  r  )r   r  r5  r   r  )r   r  r  r=   r   s       r   r5  MEPBase.get_parser  s4    w0(0C+uvh@r   r#   r^   )r&   r'   r(   r)   r5  r+   r,   r-   s   @r   r  r    s     r   r  c                       \ rS rSrSrg)&TestMutuallyExclusiveGroupErrorsParenti  r#   Nr  r#   r   r   r  r        r   r  c                       \ rS rSrSrg)!TestMutuallyExclusiveSimpleParenti#  r#   Nr  r#   r   r   r  r  #  r  r   r  c                       \ rS rSrSrg)TestMutuallyExclusiveLongParenti(  r#   Nr  r#   r   r   r  r  (  r  r   r  c                       \ rS rSrSrg)*TestMutuallyExclusiveFirstSuppressedParenti-  r#   Nr  r#   r   r   r  r  -  r  r   r  c                       \ rS rSrSrg))TestMutuallyExclusiveManySuppressedParenti2  r#   Nr  r#   r   r   r  r  2  r  r   r  c                       \ rS rSrSrg)0TestMutuallyExclusiveOptionalAndPositionalParenti7  r#   Nr  r#   r   r   r  r  7  r  r   r  c                       \ rS rSrSrg))TestMutuallyExclusiveOptionalsMixedParenti<  r#   Nr  r#   r   r   r  r  <  r  r   r  c                       \ rS rSrSrg)7TestMutuallyExclusiveOptionalsAndPositionalsMixedParentiA  r#   Nr  r#   r   r   r  r  A  r  r   r  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestSetDefaultsiI  c                    [        5       nUR                  SS9  UR                  SSS9  U R                  [        SSSS9UR	                  / 5      5        U R                  [        SSSS9UR	                  / [        5       5      5        U R                  [        SSSS9UR	                  / [        SS95      5        U R                  [        SSSS9UR	                  / [        SSS	95      5        g )
Nr3   r$  rq  r  )r  r5  r  rr  r  )r%  r5  r   set_defaultsr  r   rG   r<   s     r   test_set_defaults_no_args)TestSetDefaults.test_set_defaults_no_argsK  s    +-e$eq)eu2**2.	0eu2**2rt4	6eu2**2rE{;	=eu2**2rEQ/?@	Br   c           
         [        5       nUR                  SSS9  UR                  SSS9  U R                  [	        SSS9UR                  / 5      5        U R                  [	        SSS9UR                  / [	        5       5      5        U R                  [	        SSS9UR                  / [	        SS95      5        U R                  [	        S	SS9UR                  S
R                  5       5      5        U R                  [	        S	SS9UR                  S
R                  5       [	        5       5      5        U R                  [	        S	SS9UR                  S
R                  5       [	        SS95      5        g )Nr3   rq  r  r   xfooxr  rr  r$  rr  r  )r   r  r   r  r   rG   r  r<   s     r   test_set_defaults_with_args+TestSetDefaults.test_set_defaults_with_argsX  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                    [        5       nUR                  SS9  UR                  5       nUR                  S5      nUR                  SS9  U R	                  [        SSS9UR                  SR                  5       5      5        g )Nr3   r$  r!  rq  r  r  )r   r  r)  r+  r  r   rG   r  )r   r=   r.  parser_as       r   test_set_defaults_subparsers,TestSetDefaults.test_set_defaults_subparsersi  su    +-e$**,
((-&eu-**399;7	9r   c                     [        SS9nUR                  SS9  [        U/S9nU R                  [        SS9UR	                  / 5      5        g )NFr  r3   r$  r  r  )r   r  r=   s      r   test_set_defaults_parents)TestSetDefaults.test_set_defaults_parentsr  sH    +U;e$+VH=ef&7&7&;<r   c                     [         R                  " 5       nUR                  5       R                  S5      nUR	                  SS9  UR	                  SS9  U R                  [        SS9UR                  S/5      5        g )Nrc  r  r=  r  )r6   r7   r)  r+  r  r  r   rG   )r   r=   xparsers      r   )test_set_defaults_on_parent_and_subparser9TestSetDefaults.test_set_defaults_on_parent_and_subparserx  sl    ((*'')44S9"#F$5$5se$<=r   c           	         [        5       nUR                  SSSSS9  UR                  S5        UR                  SSS	9  UR                  S
SS9  UR                  SSSS9  U R                  [	        SSSSS9UR                  / 5      5        UR                  SSSSS9  U R                  [	        SSSSS9UR                  / 5      5        g )NWrc  r  r  r  r  r   XXr  r  r  r  r5  ZZr  WWYY)r   r  r   r  r   rG   r<   s     r   &test_set_defaults_same_as_add_argument6TestSetDefaults.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           	         [        5       nUR                  SSSSS9  UR                  S5      nUR                  S5        UR                  SS	S
9  UR                  SSS9  UR                  SSSS9  U R	                  [        SS	SSS9UR                  / 5      5        UR                  SSSSS9  U R	                  [        SSSSS9UR                  / 5      5        g )Nr  rc  r  r  r  r3   r  r   r  r  r  r  r  r5  r  r  r  r  )r   r  r   r   r  r   rG   r-  s      r   ,test_set_defaults_same_as_add_argument_group<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   r#   N)r&   r'   r(   r)   r  r  r  r  r  r  r  r+   r#   r   r   r  r  I  s'    BI"9=>0"0r   r  c                       \ rS rSrS rSrg)TestGetDefaulti  c                    [        5       nU R                  UR                  S5      5        U R                  UR                  S5      5        UR                  S5        U R                  UR                  S5      5        U R                  UR                  S5      5        UR                  S[        SS9  U R                  UR                  S5      5        U R                  SUR                  S5      5        UR                  SS9  U R                  SUR                  S5      5        U R                  SUR                  S5      5        g )	Nr3   rq  r"  r\  r0  rf  ra  r=  )r   rq  get_defaultr   r  r  r  r<   s     r   test_get_default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   r#   N)r&   r'   r(   r)   r  r+   r#   r   r   r  r    s    8r   r  c                        \ rS rSrS rS rSrg)TestNamespaceContainsSimplei  c                 v    [         R                  " 5       nU R                  SU5        U R                  SU5        g )Nr$   r%  )r6   	NamespaceassertNotInr   nss     r   
test_empty&TestNamespaceContainsSimple.test_empty  s0    !R b!r   c                     [         R                  " SSS9nU R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        g )	Nr  r  r  r$   r%  r  xxr5  )r6   r  r  r  r  s     r   test_non_empty*TestNamespaceContainsSimple.test_non_empty  s`    !q)R c2c2r"b!r   r#   N)r&   r'   r(   r)   r  r  r+   r#   r   r   r  r    s    "
"r   r  c                       \ rS rSrS rSrg)TestHelpFormattingMetaclassi  c                 X    US:X  a  g  " S S[         5      nS H  u  pVU" XU5        M     g )NHelpTestCasec                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
6TestHelpFormattingMetaclass.__init__.<locals>.AddTestsi  c                     X l         X0l        U R                  U R                  U R                  4 H/  nUR
                  < SU< 3nU4S jn XVl        [        XU5        M1     g ! [         a     Nf = f)Nr   c                     U" U 5        g r^   r#   r   s     r   test_wrapperUTestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__.<locals>.test_wrapper  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   ?TestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__  sw    #.  ("&"2"2"&//"&"6"6"8I ,5+=+={ KI5> (09- J<@"8 % s   A$$
A10A1c                 v   [         R                  " UR                  R                  0 UR                  R                  D6n[        US/ 5       H)  nUR                  " UR                  0 UR                  D6  M+     [        US/ 5      nU HZ  u  pVUR                  " UR                  0 UR                  D6nU H)  nUR                  " UR                  0 UR                  D6  M+     M\     [        US/ 5      nU(       a?  UR                  5       n	U H)  n
U	R                  " U
R                  0 U
R                  D6  M+     U$ )Nr   argument_group_signaturessubparsers_signatures)
r6   r7   r   r   r   r   r   r   r)  r+  )r   r  r=   argument_sig
group_sigs	group_sigargument_sigsr   subparsers_sigsr.  subparser_sigs              r   r  BTestHelpFormattingMetaclass.__init__.<locals>.AddTests._get_parser  s=   !00,,116--446 %,F4I2$NL''):): ?*6*=*=? %O %V-H"M
0:,I"55y~~ J8A8H8HJE(5**L,=,= B-9-@-@B )6 1; #*&2I2"N"!'!6!6!8J)8"--}/A/A G1>1E1EG *9 r   c                     [        XR                  5      n[        R                  " U5      nS Ul        UR                  X25        g r^   )r   r  r  r  r  r  )r   r  parser_textexpected_texts       r   _test<TestHelpFormattingMetaclass.__init__.<locals>.AddTests._test   s5     '0@0@ A ( >!%""=>r   c                     U R                  U5      n[        USU R                  -  5      nU R                  X" 5       5        g )Nz	format_%s)r  r   r  r  )r   r  r=   r  s       r   r  BTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_format  s9    ))&1 t7G7G)GH

668,r   c                    U R                  U5      n[        USU R                  -  5      n[        [        U R                  5      n[        [        U R                  [        5       5         U" 5         [        [        U R                  5      R                  5       n[        [        U R                  U5        U R                  X5        g ! [        [        U R                  U5        f = fNzprint_%s)	r  r   r  r   r  r   r
   r   r  )r   r  r=   print_
old_streamr  s         r   r  ATestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print  s    ))&1 d6F6F)FG$S$--8
T]]KM:<H")#t}}"="F"F"HKC
;

6/ C
;s   )/C C"c                     U R                  U5      n[        USU R                  -  5      n[        5       nU" U5        UR	                  5       nU R                  X5        g r  )r  r   r  r
   r   r  )r   r  r=   r  sfiler  s         r   r  FTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print_file  sO    ))&1 d6F6F)FG#u#nn.

6/r   )r  r  N)r&   r'   r(   r)   r   r  r  r  r  r  r+   r#   r   r   r  r    s!    A",?-

00r   r  ))usager   )rN  r   )r  )r  rt   r  r  r  r  r  s          r   r   $TestHelpFormattingMetaclass.__init__  s5    >!F	0v F	0R&:!KSx0&:r   r#   Nr   r#   r   r   r  r    s    O1r   r  r  c            	           \ rS rSrSr\" SSSS9r\" SSS	S
S9\" SSSS9\" SSS9\" SSS9\" SSS9/r/ rSr	\	S-   r
SrSrg)TestHelpBiggerOptionalsi(  ;Make sure that argument help aligns when options are longerr  DESCRIPTIONEPILOGr  r  epilogr  r  r  0.1r  r   r,  X HELPr  --yY HELPr  r3   FOO HELPrq  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
        r#   Nr&   r'   r(   r)   r*   r   r   r   r	  r!  rN  r  r+   r#   r   r   r$  r$  (  s    EM"*, 	D+i?DH5E!E
#E
# !#E   D Gr   r$  c                       \ rS rSrSrS r\R                  r\R                  r\R                  r	Sr
\
S-   r\R                  rSrg)TestShortColumnsiL  zTest extremely small number of columns.

TestCase prevents "COLUMNS" from being too small in the tests themselves,
but we don't want any exceptions thrown in such cases. Only ugly representation.
c                 p    U R                  [        R                  " 5       5      nUR                  SS5        g )NrS   r  )rT   r   rU   r  rV   s     r   rX   TestShortColumns.setUpR  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
    r#   N)r&   r'   r(   r)   r*   rX   r$  r   r   r	  r!  rN  r  r+   r#   r   r   r3  r3  L  sW    
! #:"J"J"9"M"M"9"S"SE   D: #:"A"AGr   r3  c            	           \ rS rSrSr\" SSSS9r\" SSS	S
S9\" SSSS9\" SSS9\" SSS9\" SSS9/r\" SSS9\" SSS9\" SSSS9/4/rS r	\	S!-   r
S"rS#rg$)%TestHelpBiggerOptionalGroupsi  r%  r  r&  r'  r(  r  r  r  r*  r  r   r,  r+  r  r,  r-  r  r3   r.  rq  r/  zGROUP TITLEzGROUP DESCRIPTIONr  rr  zBAZ HELPr3  r  zZ HELPr'  zN        usage: PROG [-h] [-v] [-x] [--y Y] [-z Z [Z ...]] foo bar baz
        a  
        DESCRIPTION

        positional arguments:
          foo            FOO HELP
          bar            BAR HELP

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

        GROUP TITLE:
          GROUP DESCRIPTION

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

        EPILOG
    r0  r#   Nr1  r#   r   r   r7  r7    s    EM"*, 	D+i?DH5E!E
#E
# 
](;	<J'Ch/?1 	2!
E   D,Gr   r7  c                   r    \ rS rSrSr\" SSS9r\" SSSS	9\" S
SS9\" SSS9\" SSS9/r/ rSr	\	S-   r
SrSrg)TestHelpBiggerPositionalsi  z4Make sure that help aligns when arguments are longerUSAGEr&  r!  r  r   r,  r+  r  r,  r-  r  ekiekiekifekangzEKI HELPrq  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$   r#   Nr1  r#   r   r   r9  r9    sl    >mDDH5E!J/E
#	 !#E   D Gr   r9  c                   z    \ rS rSrSr\" SSS9r\" SSSS	9\" S
SSS	9/r\" SSS9\" SSSS9/4/rSr	\	S-   r
SrSrg)TestHelpReformattingi  >Make sure that text after short names starts on the first liner  ze   oddly    formatted
description

that is so long that it should go onto multiple lines when wrappedr  r   r  zoddly
    formatted -x helpr  rN  r  r4  znormal y helpr  z'
    oddly formatted group

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

        positional arguments:
          yyy         normal y help

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

        title:
          oddly formatted group description

          -a          oddly formatted -a help again, so long that it should be wrapped
                      over multiple lines
        r$   r#   Nr1  r#   r   r   r?  r?    s    H)* 	D$ &= 	>C_5 
W #0 
1 d<$% 
&		'
!E   D( Gr   r?  c                   |    \ rS rSrSr\" SSS9r\" SSSS	9\" S
SSS	9/r\" S5      \" SSSS9/4/rSr	\	S-   r
SrSrg)TestHelpWrappingShortNamesi  r@  r  zZD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
Dr  r   r  zxXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXrA  r  r4  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  rB  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$   r#   Nr1  r#   r   r   rD  rD    sz    H[AD$]3C\2
 
X\@B 	C!E   D, Gr   rD  c                       \ rS rSrSr\" SSS9r\" SSSS	S
9\" SSSS9\" SSSS9/r\" S5      \" SSSS9\" SSSS9/4/rSr	\	S-   r
SrSrg)TestHelpWrappingLongNamesi,  z<Make sure that text after long names starts on the next liner:  zZD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD Dr;  r  r  r  zZV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV Vr  r   XXXXXXXXXXXXXXXXXXXXXXXXXzdXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHrA  r  yyyyyyyyyyyyyyyyyyyyyyyyyrE  rF  r  AAAAAAAAAAAAAAAAAAAAAAAAAzdAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHr5  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
        r#   Nr1  r#   r   r   rH  rH  ,  s    FzBD+iDD(6C5 
Xh\:XL9; 	<!
E   D<Gr   rH  c                   n   \ rS rSrSr\" SS9r\" SSSS9\" S	S
SS9\" SSS9\" SSSS9\" SSSS9\" SS\R                  S9\" SSS\R                  S9\" SSS\R                  S9\" S\R                  \R                  SS 9/	r
\" S!5      \" S"SS#S9\" S$S%S&S9\" S'S'S
S9\" S(S(SS9/4/rS)r\S*-   rS+rS,rg-).TestHelpUsageib  Test basic usage messagesr  r!  r  r  rx   r'  r   r  r%  r!  r  r  r  )rN  r  r  r  r"  zWhether to foorN  r.  r\  zWhether to barT)rN  r  r.  rA  z--foobarz--barfoor-  z--bazzzBazz!)r.  r  rN  r   r8  r  r3  r  r5  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$   r#   N)r&   r'   r(   r)   r*   r   r   r6   r  r  r   r	  r!  rN  r  r+   r#   r   r   rN  rN  b  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   rN  c                   P    \ rS rSr\" SS9r\" SSS9\" SSS	S9/rS
r\S-   rSr	Sr
g)TestHelpUsageWithParenthesesi  r  r!  
positionalz(example) positionalr  rE  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, --optional {1 (option A), 2 (option B)}
        r$   r#   Nr&   r'   r(   r)   r   r   r   r!  rN  r  r+   r#   r   r   rR  rR    sL    'L"89D,(FG
E   D Gr   rR  c                       \ rS rSrSr\" SSS9r/ r\" S5      \" SSS	9\" S
S
S	9/4\" S5      \" SSS	9\" SSS	9/4/rSr	\	S-   r
SrSrg)TestHelpOnlyUserGroupsi  rO  r  Fr  rx  xxxxr   r%  r  r!  yyyyr  r8  r  z.        usage: PROG [-x X] [-y Y] a b
        zn
        xxxx:
          -x X  x
          a     a

        yyyy:
          b     b
          -y Y  y
        r$   r#   Nr1  r#   r   r   rW  rW    s    #7	V3#
 	 
V#3
 		!E  	 	D Gr   rW  c                   r    \ rS rSrSr\" SS9r\" SSS9\" SS	S9\" S
5      \" S5      /r/ rSr	\	S-   r
SrSrg)TestHelpUsageLongProgi  z*Test usage messages where the prog is long<PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPr!  r  r  rT  r   rc  r!  r  zz        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               [-h] [-w W] [-x X] a b
        z
        positional arguments:
          a
          b

        options:
          -h, --help  show this help message and exit
          -w W
          -x X
        r$   r#   Nr1  r#   r   r   r\  r\    sa    4)D#D#CC	 !#E  
 
D Gr   r\  c                       \ rS rSrSr\" SS9r\" SSS9\" SS	S9\" S
SS9\" SSS9\" S5      \" S5      /r/ rSr	\	S-   r
SrSrg) TestHelpUsageLongProgOptionsWrapi  zATest usage messages where the prog is long and the optionals wrapr]  r!  r  WWWWWWWWWWWWWWWWWWWWWWWWWrT  r   rI  r8  YYYYYYYYYYYYYYYYYYYYYYYYYr3  ZZZZZZZZZZZZZZZZZZZZZZZZZr!  r  a          usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
               [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
               a b
        a-  
        positional arguments:
          a
          b

        options:
          -h, --help            show this help message and exit
          -w WWWWWWWWWWWWWWWWWWWWWWWWW
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        r$   r#   Nr1  r#   r   r   r_  r_    su    K)D(#D(#D(#D(#CC !#E   D Gr   r_  c                   j    \ rS rSrSr\" SSS9r\" S5      \" S5      \" S5      /r/ rS	r	\	S
-   r
SrSrg)$TestHelpUsageLongProgPositionalsWrapi  zCTest usage messages where the prog is long and the positionals wrapr]  FrX  aaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccz        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
               ccccccccccccccccccccccccc
        
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        r$   r#   Nr1  r#   r   r   rd  rd    sV    M59HHH
 !#E
   D Gr   rd  c            	           \ rS rSrSr\" SS9r\" SSS9\" SS	S9\" S
SS9\" SSS9\" S5      \" S5      \" S5      /r/ rSr	\	S-   r
SrSrg)TestHelpUsageOptionalsWrapi*  z,Test usage messages where the optionals wrapr  r!  r  r`  rT  r   rI  r8  ra  r3  rb  r!  r  r  z        usage: PROG [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
                    [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
                    a b c
        a9  
        positional arguments:
          a
          b
          c

        options:
          -h, --help            show this help message and exit
          -w WWWWWWWWWWWWWWWWWWWWWWWWW
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        r$   r#   Nr1  r#   r   r   rj  rj  *  s|    6'D(#D(#D(#D(#CCC !#E   D Gr   rj  c                       \ rS rSrSr\" SS9r\" S5      \" S5      \" S5      \" S5      \" S	5      \" S
5      /r/ rSr	\	S-   r
SrSrg)TestHelpUsagePositionalsWrapiP  z.Test usage messages where the positionals wrapr  r!  r   r8  r3  re  rf  rg  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$   r#   Nr1  r#   r   r   rl  rl  P  si    8'D	D	D	HHH !#E
   D Gr   rl  c                       \ rS rSrSr\" SS9r\" SSS9\" SS	S9\" S
SS9\" S5      \" S5      \" S5      /r/ rSr	\	S-   r
SrSrg)%TestHelpUsageOptionalsPositionalsWrapir  z<Test usage messages where the optionals and positionals wrapr  r!  r   rI  rT  r8  ra  r3  rb  re  rf  rg  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$   r#   Nr1  r#   r   r   rn  rn  r  sr    F'D(#D(#D(#HHH !#E   D Gr   rn  c                   b    \ rS rSrSr\" SS9r\" SSS9\" SS	S9\" S
SS9/r/ rSr	\	S-   r
SrSrg)TestHelpUsageOptionalsOnlyWrapi  z@Test usage messages where there are only optionals and they wrapr  r!  r   rI  rT  r8  ra  r3  rb  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$   r#   Nr1  r#   r   r   rp  rp    s]    J'D(#D(#D(#
 !#E
   D Gr   rp  c                   j    \ rS rSrSr\" SSS9r\" S5      \" S5      \" S5      /r/ rS	r	\	S
-   r
SrSrg) TestHelpUsagePositionalsOnlyWrapi  zBTest usage messages where there are only positionals and they wrapr  FrX  re  rf  rg  z~        usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        rh  r$   r#   Nr1  r#   r   r   rr  rr    sV    L7HHH
 !#E   D Gr   rr  c                      \ rS rSr\" SS9r\" SSSS9\" SS	S
S9\" SSSS9\" SSSS9\" SSSS9\" SSSS9\" SSSS9\" SSSS9\" SSSS9\" S S!S"S9\" S#S$S%S9\" S&S'S(S9\" S)S*S+S9\" S,S-S.S9\" S/S0S1S9\" S2S3S4S9/rS5r\S6-   rS7r	S8r
g9):&TestHelpUsageMetavarsSpacesParenthesesi  r  r!  z-n1z()n1rA  z-o1z(1, 2)o1z-u1z (uu) u1z-v1z( vv )v1z-w1z(w)ww1z-x1zx(x)x1z-y1zyy)y1z-z1z(zzz1z-n2z[]n2z-o2z[1, 2]o2z-u2z [uu] u2z-v2z[ vv ]v2z-w2z[w]ww2z-x2zx[x]x2z-y2zyy]y2z-z2z[zzz2z        usage: PROG [-h] [-n1 ()] [-o1 (1, 2)] [-u1  (uu) ] [-v1 ( vv )] [-w1 (w)w]
                    [-x1 x(x)] [-y1 yy)] [-z1 (zz] [-n2 []] [-o2 [1, 2]] [-u2  [uu] ]
                    [-v2 [ vv ]] [-w2 [w]w] [-x2 x[x]] [-y2 yy]] [-z2 [zz]
        a  
        options:
          -h, --help  show this help message and exit
          -n1 ()      n1
          -o1 (1, 2)  o1
          -u1  (uu)   u1
          -v1 ( vv )  v1
          -w1 (w)w    w1
          -x1 x(x)    x1
          -y1 yy)     y1
          -z1 (zz     z1
          -n2 []      n2
          -o2 [1, 2]  o2
          -u2  [uu]   u2
          -v2 [ vv ]  v2
          -w2 [w]w    w2
          -x2 x[x]    x2
          -y2 yy]     y2
          -z2 [zz     z2
        r$   r#   NrU  r#   r   r   rt  rt    s     'E4d+E8$/E8$/E8$/E6-E6-E5t,E5t,E4d+E8$/E8$/E8$/E6-E6-E5t,E5t,!&E
   D* Gr   rt  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestHelpUsageNoWhitespaceCrashi  c                    [         R                  " SS9nUR                  5       nUR                  S[         R                  S9  UR                  S5        [
        R                  " S5      nU R                  UR                  5       U5        g )Nr  r!  ru  r  z--eggs-eggs-eggs-eggs-eggs-eggszu        usage: PROG [-h]
                    [--eggs-eggs-eggs-eggs-eggs-eggs EGGS_EGGS_EGGS_EGGS_EGGS_EGGS]
        )	r6   r7   r  r   r  r  r  r  rO  r   r=   mutexr!  s       r   .test_all_suppressed_mutex_followed_by_long_argMTestHelpUsageNoWhitespaceCrash.test_all_suppressed_mutex_followed_by_long_arg  sx     ((f53358(*;*;<=> !  	,,.6r   c                 
   / SQn[         R                  " S5      nUR                  SSSSS9  UR                  SS	S
SR                  U5      S9  [        R
                  " S5      nU R                  UR                  5       U5        g )N)12345612345r  12311111111111111r  r  zverbose moder,  rP  targetszinstallation targetsr  r%   rN  r  r  z        usage: 11111111111111 [-h] [-v]
                              123456
        12345
        12345
        123 [123456
        12345
        12345
        123 ...]
        )r6   r7   r   rl   r  r  r  rO  )r   mappingr=   r!  s       r   test_newline_in_metavar6TestHelpUsageNoWhitespaceCrash.test_newline_in_metavar  s    5(()9:D+!/ 	 	FI!7"%$(IIg$6 	 	8  	! 	 	,,.6r   c                     [         R                  " SS9nUR                  SSSS9  UR                  SSS	9  S
nU R                  UR	                  5       U5        g )Nr  r!  z--nilr$   T)r  r  z--aFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArT  zqusage: PROG [-h] --nil 
            [--a AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA]
)r6   r7   r   r  rO  )r   r=   r!  s      r   test_empty_metavar_required_arg>TestHelpUsageNoWhitespaceCrash.test_empty_metavar_required_arg!  s_    ((f5GR$?E84) 	
 	,,.6r   c                    [         R                  " SS9nUR                  5       nUR                  SSSS[         R                  S9  UR                  SSSS[         R                  S9  S	nU R                  UR                  5       U5        g )
Nr  r!  z--param1r  r  NAME)r  r2  r  rN  z--param2zusage: PROG [-h]
)r6   r7   r  r   r  r  rO  r  s       r   -test_all_suppressed_mutex_with_optional_nargsLTestHelpUsageNoWhitespaceCrash.test_all_suppressed_mutex_with_optional_nargs-  s    ((f5335YX=N=N 	 	P 	YX=N=N 	 	P %,,.6r   c                 R   [         R                  " SS9nUR                  5       nUR                  S5        [        R
                  " 5          [        R                  " S[        5        UR                  5       nS S S 5        WR                  S5        UR                  S[         R                  S9  UR                  S5        UR                  S	5        UR                  S
5        [        R                  " S5      nU R                  UR                  5       U5        g ! , (       d  f       N= f)Nr  r!  ru  r/  z--haxz--hoxr  z--hexr  z--numzw        usage: PROG [-h] [--spam SPAM | [--hax HAX | --hex HEX] | --eggs EGGS]
                    [--num NUM]
        )r6   r7   r  r   r  r  r  r  r  r  r  r  rO  )r   r=   r  ggr!  s        r   test_nested_mutex_groups7TestHelpUsageNoWhitespaceCrash.test_nested_mutex_groups:  s    ((f5//1	x $$&!!(,>?//1B ' 	 
h&7&78
 	x G$ !  	,,.6 '&s   ,D
D&c                    [         R                  " SS9nUR                  5       nUR                  SSSS9  UR                  SSS	S9  UR                  S
S	S9  UR                  SSSS9  UR                  SSS9  UR                  SSS9  UR                  SSSS9  [        R
                  " S5      nU R                  UR                  5       U5        g )Nr  r!  z--op1METr  )r  r  z--op2)MET1MET2r  z--op3r  z--op4r  z--op5z--op6r  z--op7)r  r  MET3z        usage: PROG [-h] [--op1 [MET] | --op2 [MET1 [MET2 ...]] | --op3 [OP3 ...] |
                    --op4 MET1 [MET2 ...] | --op5 OP5 [OP5 ...] | --op6 OP6 OP6 OP6 |
                    --op7 MET1 MET2 MET3]
        )r6   r7   r  r   r  r  r  rO  )r   r=   r  r!  s       r   test_long_mutex_groups_wrap:TestHelpUsageNoWhitespaceCrash.test_long_mutex_groups_wrapM  s    ((f5//1	wS9	w(8D	wc*	w(8D	wc*	wa(	w(@J ! 
 	,,.6r   r#   N)r&   r'   r(   r)   r  r  r  r  r  r  r+   r#   r   r   r  r    s     77,
777&7r   r  c                       \ rS rSrSr\" SS9r\" S\SS9\" SS	S
SSS9\" S/ SQSS9\" SSSS/SSS9\" SSS9\" SSSS9/r\" S 5      \" S!S"S9\" S#S$S%S9/4/r	S&r
\
S'-   rS(rS)rg*)+TestHelpVariableExpansioni`  z:Test that variables are expanded properly in help messagesr  r!  r   z"x %(prog)s %(default)s %(type)s %%r  r8  r/  r0  XXXz y %(prog)s %(default)s %(const)s)r.  r  r2  rN  r"  r  z$foo %(prog)s %(default)s %(choices)srM  r\  rr  r  r  BBBz!bar %(prog)s %(default)s %(dest)s)r  r  r  rN  r  zspam %(prog)s %(default)sr  ra  r  zbadger %(prog)s %(default)s)r  rN  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$   r#   N)r&   r'   r(   r)   r*   r   r   r  r   r	  r!  rN  r  r+   r#   r   r   r  r  `  s    D'Ds5	7D%3	5G_7	9GUQFE4	6F45Hc(EF 
W34b'?@
 	!E   D" Gr   r  c                   @    \ rS rSrSr\" SSS9r/ r/ rSr	\	S-   r
SrS	rg
)&TestHelpVariableExpansionUsageSuppliedi  z@Test that variables are expanded properly when usage= is presentr  z%(prog)s FOOr  r!  z         usage: PROG FOO
        rx  r$   r#   Nr1  r#   r   r   r  r    s=    Jn= "E   D
 Gr   r  c                   :    \ rS rSrSr\" SSS9r/ r/ rSr	\	r
SrSrg	)
$TestHelpVariableExpansionNoArgumentsi  z;Test that variables are expanded properly with no argumentsr  FrX  z        usage: PROG
        r$   r#   Nr1  r#   r   r   r  r    s1    E7 "E DGr   r  c                   f    \ rS rSrSr\" S\R                  S9r\" SSS9\" SS	S9/r	/ r
S
rSrSrSrg)TestHelpSuppressUsagei  z3Test that items can be suppressed in usage messagesr  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$   r#   N)r&   r'   r(   r)   r*   r   r6   r  r   r   r	  rN  r!  r  r+   r#   r   r   r  r    sO    =h.?.?@G*%F% !#D EGr   r  c                   l    \ rS rSrSr\" SSS9r\" S\R                  S9\" SS	S9/r	/ r
S
r\S-   rSrSrg)TestHelpSuppressOptionali  z?Test that optional arguments can be suppressed in help messagesr  FrX  r"  r  r  r  z!        usage: PROG spam
        zA
        positional arguments:
          spam  spam help
        r$   r#   Nr&   r'   r(   r)   r*   r   r   r6   r  r   r	  r!  rN  r  r+   r#   r   r   r  r    s[    I7G(++,F% !#E   D
 Gr   r  c                       \ rS rSrSr\" SS9r\" SSS9\" SS	S9/r\" S
5      \" S\R                  S9/4/r
Sr\S-   rSrSrg)TestHelpSuppressOptionalGroupi  z<Test that optional groups can be suppressed in help messagesr  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$   r#   N)r&   r'   r(   r)   r*   r   r   r   r6   r  r	  r!  rN  r  r+   r#   r   r   r  r    sq    F'G*%F%
 
WG(*;*;<=>!E   D Gr   r  c                   j    \ rS rSrSr\" SS9r\" SSS9\" S\R                  S9/r	/ r
S	r\S
-   rSrSrg)TestHelpSuppressPositionali  zATest that positional arguments can be suppressed in help messagesr  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$   r#   Nr  r#   r   r   r  r    sY    K'G*%F**+ !#E   D Gr   r  c                   L    \ rS rSrSr\" SS9r\" SSSS9/r/ rS	r	\	S
-   r
SrSrg)TestHelpRequiredOptionali  z.Test that required options don't look optionalr  r!  r"  Tr  )r  rN  z+        usage: PROG [-h] --foo FOO
        r  r$   r#   Nr1  r#   r   r   r  r    sK    8'Gd4 !#E   D Gr   r  c                   ^    \ rS rSrSr\" SSSS9r\" SSS	S
9\" SSSS9/r/ rSr	\	S-   r
SrSrg)TestHelpAlternatePrefixCharsi  z:Test that options display with different prefix charactersr  z^;F)r  rw  rx  z^^foor,  r  r  z;bz;;barr  r  z-        usage: PROG [^^foo] [;b BAR]
        z^
        options:
          ^^foo          foo help
          ;b, ;;bar BAR  bar help
        r$   r#   Nr1  r#   r   r   r  r    s[    DTEJGLz:D'
+ !#E   D Gr   r  c                   X    \ rS rSrSr\" SSS9r\" SSS9\" S	S
S9/r/ rSr	\	S-   r
SrSrg)TestHelpNoHelpOptionali-  z=Test that the --help argument can be suppressed help messagesr  FrX  r"  r  r  r  r  z-        usage: PROG [--foo FOO] spam
        zv
        positional arguments:
          spam       spam help

        options:
          --foo FOO  foo help
        r$   r#   Nr1  r#   r   r   r  r  -  sU    G7G*%F% !#E   D Gr   r  c                   Z    \ rS rSrSr\" SS9r\" S5      \" S5      /r/ rSr	\	S-   r
S	rS
rg)TestHelpNoneiD  z1Test that no errors occur if no help is specifiedr  r!  r"  r  r  z
        positional arguments:
          spam

        options:
          -h, --help  show this help message and exit
          --foo FOO
        r$   r#   Nr1  r#   r   r   r  r  D  sM    ;'GF !#E   D Gr   r  c            
       ~    \ rS rSrSr\" SS9r\" SSSSS	9\" S
SSSS	9\" SSSSS	9\" SSSSS	9/r/ rSr	\	S-   r
SrSrg)TestHelpTupleMetavarOptionali\  z"Test specifying metavar as a tupler  r!  r  rx   r  W1W2r  r   r%  r  X1X2r8  r  r  Y1Y2Y3r3  r5  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$   r#   Nr1  r#   r   r   r  r  \  sx    ,'Ds#|<Ds#|<Ds!-?@Ds#x8	 !#E   D Gr   r  c            
       ~    \ rS rSrSr\" SS9r\" SSSSS	9\" S
SSSS	9\" SSSSS	9\" SSSSS	9/r/ rSr	\	S-   r
SrSrg)TestHelpTupleMetavarPositionaliw  z2Test specifying metavar on a Positional as a tupler  r!  rx   r   r  r  r  r%  r!  r  r  r  r#  r  r  r5  r$  r  r  zI        usage: PROG [-h] W1 [W2 ...] [X1 [X2 ...]] Y1 Y2 Y3 [Z1]
        z
        positional arguments:
          W1 W2       w help
          X1 X2       x help
          Y1 Y2 Y3    y help
          Z1          z help

        options:
          -h, --help  show this help message and exit
        r$   r#   Nr1  r#   r   r   r  r  w  sx    <'Chc<@Chc<@Cha1CDChc7;	 !#E  
 
D Gr   r  c                       \ rS rSrSr\" S\R                  SS9r\" SSS9\" S	S
S9/r	\" SSS9\" SSS9/4/r
Sr\S-   rSrSrg)TestHelpRawTexti  Test the RawTextHelpFormatterr  7Keep the formatting
    exactly as it is written

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

        here

        positional arguments:
          spam        spam help

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

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

          --bar BAR   bar help
        r$   r#   N)r&   r'   r(   r)   r*   r   r6   RawTextHelpFormatterr   r   r	  r!  rN  r  r+   r#   r   r   r  r    s    'X%B%B 	G 1 	2F% 
W #B 
C gJ
'	(	*!E   D, Gr   r  c                       \ rS rSrSr\" S\R                  SS9r\" SSS9\" S	S
S9/r	\" SSS9\" SSS9/4/r
Sr\S-   rSrSrg)TestHelpRawDescriptioni  r  r  r  r  r"  z4  foo help should not
    retain this odd formattingr  r  r  r  r  r  r\  r  r  a  
        Keep the formatting
            exactly as it is written

        here

        positional arguments:
          spam        spam help

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

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

          --bar BAR   bar help
        r$   r#   N)r&   r'   r(   r)   r*   r   r6   RawDescriptionHelpFormatterr   r   r	  r!  rN  r  r+   r#   r   r   r  r    s    'X%I%I 	G ; 	<F% 
W #B 
C gJ
'	(	*!E   D* Gr   r  c                      \ rS rSrSr\" S\R                  SS9r\" SSS9\" S	S
SS9\" S\R                  SSS9\" S\R                  S\R                  S9\" SSSS9\" SSS9\" SSSSS9/r\" SSS9\" S \SS!S"9/4/rS#r\S$-   rS%rS&rg')(TestHelpArgumentDefaultsi  z&Test the ArgumentDefaultsHelpFormatterr  r  r  r"  z)foo help - oh and by the way, %(default)sr  r\  r,  r  r  z--tazzWhether to taz itT)r.  rN  r  z--corgezWhether to corge itr  zSet the quuxr0  )rN  r  r  r  ra  r  woodenzbadger helpr  r  rN  r  r  r  r[  )r   r  rN  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$   r#   N)r&   r'   r(   r)   r*   r   r6   ArgumentDefaultsHelpFormatterr   r  r  r   r  r	  r!  rN  r  r+   r#   r   r   r  r    s    0X%K%K!#
 	GEFGLz:GH::$d	4Ih<<&0A0A	CH>26F%HCF
 
W-	0
gC*
=	>	@!E
   D* Gr   r  c                   P    \ rS rSrSr\" SSS9r\" SSSS	S
9/r/ rSr	\	S-   r
SrSrg)TestHelpVersionActioni&  z,Test the default help for the version actionr  r  r  -Vr  r  z3.6r  z&        usage: PROG [-h] [-V]
        z
        description

        options:
          -h, --help     show this help message and exit
          -V, --version  show program's version number and exit
        r$   r#   Nr1  r#   r   r   r  r  &  sK    6MBt[ERS "E   D Gr   r  c                   x    \ rS rSrSr\" SS9r\" SSSS\R                  S	9\" S
SS9\" SSS9/r	/ r
Sr\S-   rSrg)TestHelpVersionActionSuppressi:  zCTest that the --version argument can be suppressed in help messagesr  r!  r  r  r  r  )r.  r  rN  r"  r  r  r  r  r  r  r#   N)r&   r'   r(   r)   r*   r   r   r6   r  r   r	  r!  rN  r+   r#   r   r   r  r  :  se    M'D+i""	$G*%F%	 !#E   Dr   r  c            	           \ rS rSrSr\" SSS9r\" SSSS	S
9/rS V VVs/ s H  n[        US9PM     snnn rSr	\	S-   r
SrSrgs  snnn f )TestHelpSubparsersOrderingiS  5Test ordering of subcommands in help matches the coder  display some subcommandsr  r  r  r  r*  r  )r!  r  r  r  r   rI  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
        r0  r#   N)r&   r'   r(   r)   r*   r   r   r   r
  r!  rN  r  r+   ).0rt   r   s   000r   r  r  S  sv    ?'ACt[ERS *CD)B !d^)BDE  
 
DG'Ds   Ar  c                       \ rS rSrSr\" SSS9r\" SSSS	S
9/rSr\ V VVVs/ s H  u  p[        XS9PM     snnnn r	Sr
\
S-   rSrSrgs  snnnn f )"TestHelpSubparsersWithHelpOrderingip  r  r  r  r  r  r  r  r*  r  ))r!  za subcommand help)r  zb subcommand help)r  zc subcommand help)r  zd subcommand help)r   ze subcommand help)rt   rN  r  a  
        display some subcommands

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

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        r0  r#   N)r&   r'   r(   r)   r*   r   r   r   subcommand_datar
  r!  rN  r  r+   )r  rt   rN  r   s   0000r   r  r  p  s    ?'ACt[ERSO 0?@/> !d6/>@E   D"G1@s   A

r  c                   ~    \ rS rSrS r\" SS\R                  S9r\" S\	S9\" S\S9\" S	\
S
S9/r/ rSr\S-   rSrSrg)TestHelpMetavarTypeFormatteri  c                     U $ r^   r#   r  s    r   custom_type(TestHelpMetavarTypeFormatter.custom_type  s    r   r  r  )r  r  r  r!  r  r  r  z
SOME FLOAT)r   r  zF        usage: PROG [-h] [-b custom_type] [-c SOME FLOAT] int
        z
        description

        positional arguments:
          int

        options:
          -h, --help      show this help message and exit
          -b custom_type
          -c SOME FLOAT
        r$   r#   N)r&   r'   r(   r)   r  r   r6   MetavarTypeHelpFormatterr   r  r  r   r	  r!  rN  r  r+   r#   r   r   r  r    sr     M+3+L+LNs-t+6t%FH !#E   D Gr   r  c                   "    \ rS rSrSrSrS rSrg)!TestHelpUsageLongSubparserCommandi  z<Test that subparser commands are formatted correctly in helpNc                 "   S n[         R                  " SUS9nUR                  SSSS9nUR                  SS	S
9  UR                  SSS
9  UR                  SSS
9  UR	                  5       nU R                  U[        R                  " S5      5        g )Nc                 ,    [         R                  " U SS9$ )N2   )max_help_position)r6   r  r!  s    r   custom_formatterLTestHelpUsageLongSubparserCommand.test_parent_help.<locals>.custom_formatter  s    00LLr   r  )r  r  r  CMDzcommand to use)r  r  rN  rs  zadd somethingr  removezremove somethingza-very-long-commandzcommand that does somethinga}              usage: PROG [-h] CMD ...

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

            commands:
              CMD                    command to use
                add                  add something
                remove               remove something
                a-very-long-command  command that does something
        )r6   r7   r)  r+  rP  r  r  r  )r   r  parent_parsercmd_subparsersr  s        r   r  2TestHelpUsageLongSubparserCommand.test_parent_help  s    	M !// 0

 '55J>C;K 6 M 	!!%'6 	" 	8 	!!('9 	" 	; 	!!"7'D 	" 	F $//1hoo 7 ' 	r   r#   )r&   r'   r(   r)   r*   r  r  r+   r#   r   r   r  r    s    FG!r   r  c                       \ rS rSrSrSS.S jrSS.S jrS rS rS	 r	S
 r
S rS rS rS rS rS rS rS rS rS rS rSrg)TestInvalidArgumentConstructorsi  z-Test a bunch of invalid Argument constructorsN)errmsgc                x    [         R                  " 5       nU R                  " [        XR                  /UQ70 UD6  g r^   )r6   r7   rW  r   r   r   r  r   r   r=   s        r   assertTypeError/TestInvalidArgumentConstructors.assertTypeError  s8    ((*y&2E2E 	0 $	0(.	0r   c                x    [         R                  " 5       nU R                  " [        XR                  /UQ70 UD6  g r^   )r6   r7   rW  r  r   r  s        r   assertValueError0TestInvalidArgumentConstructors.assertValueError  s8    ((*z63F3F 	0 $	0(.	0r   c                     U R                  SS S9  U R                  SSS9  U R                  SSS9  U R                  S0 S9  g )	Nr   )rq  r8  r3   )callbackr#   )callback_args)callback_kwargsr  r!   s    r   test_invalid_keyword_arguments>TestInvalidArgumentConstructors.test_invalid_keyword_arguments  sN    Tt,TE2T4T26r   c                     U R                  5         S H*  nU R                  US9   U R                  US9  S S S 5        M,     g ! , (       d  f       M>  = f)Nr  r  r  r-  )r  rH   r   r.  s     r   test_missing_destination8TestInvalidArgumentConstructors.test_missing_destination  sF    3FV,$$F$3 -, 4,,s   A
A	c                 H    U R                  S5        U R                  S5        g )NrA  z---r  r!   s    r   test_invalid_option_strings;TestInvalidArgumentConstructors.test_invalid_option_strings  s    d#e$r   c                 (    U R                  SS5        g )Nr"  z+foor   r!   s    r   test_invalid_prefix3TestInvalidArgumentConstructors.test_invalid_prefix  s    gv.r   c                 X    U R                  SSS9  U R                  S[        [        4S9  g )Nr"  r  r  )r  r  r  r!   s    r   r  1TestInvalidArgumentConstructors.test_invalid_type  s,    gE2gS%L9r   c                     U R                  SSS9  U R                  SSS9  U R                  SSS9  U R                  SSSS	9  g )
Nr   r3   r-  rr  r"  )r  r  z
store-truezunknown action)r.  r  r   r!   s    r   test_invalid_action3TestInvalidArgumentConstructors.test_invalid_action  sV    d51eE2g.ABgl%5 	 	7r   c                    [         R                  " 5       nUR                  SS9  U R                  [        5       nUR                  SSS9  S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nr3   rT  rq  rr  z+dest supplied twice for positional argument)r6   r7   r   r  r  r  r  r  r  s      r   test_multiple_dest2TestInvalidArgumentConstructors.test_multiple_dest  sm    ((*'z*bE2 +C",,'	) +*s   A99
Bc           	         S H  nU R                  US9   [        [        S9[        SS9[        SS/S94 HC  nU R                  US	9   U R                  " SSU0UD6  U R                  " SSU0UD6  S S S 5        ME     U R                  S
USS9  U R                  SUSS9  S S S 5        M     g ! , (       d  f       M  = f! , (       d  f       M  = f)N)r/  r,  r  r  r  r-  r  r  r  r!  r  r  )attrsr   r.  r%  r   r  )r   r$  )rH   r*  r  r  )r   r.  r/  s      r   test_no_argument_actions8TestInvalidArgumentConstructors.test_no_argument_actions  s    0FV,"ndo"C:68EE2,,J&JEJ,,II5I 328
 $$T&$B$$Sq$A -,0
 32 -,s#   3B>)B,	1.B>,
B;6B>>
C	c                     S H=  nU R                  US9   U R                  SSUS9  U R                  SSUS9  S S S 5        M?     g ! , (       d  f       MQ  = f)N)r,  r  r  r-  r   r3   r  r  r  rH   r  r  s     r   !test_no_argument_no_const_actionsATestInvalidArgumentConstructors.test_no_argument_no_const_actions#  sU    <FV,$$Tv$F $$TV$D -, =,,s   #A
A	c           
      ,   S H|  nU R                  US9   US:X  a  SOUnU R                  SSUSU S3S	9  U R                  S
SUSU S3S	9  S H%  nU R                  SSX1S9  U R                  S
SX1S9  M'     S S S 5        M~     g ! , (       d  f       M  = f)Nr  r-  r  r  r   r   z
nargs for z actions must be != 0)r  r.  r  r  )r  r  r  r3   )r2  r  r.  )rH   r  )r   r.  action_namer  s       r   #test_more_than_one_argument_actionsCTestInvalidArgumentConstructors.test_more_than_one_argument_actions-  s    3FV,*0H*<h&%%d!F'}4IJ & L%%fAf'}4IJ & L +E))$e05 * F))&05 * F + -, 4,,s   A"B
B	c                     S H,  nU R                  US9   U R                  SSUS9  S S S 5        M.     g ! , (       d  f       M@  = f)N)r/  r  r-  r   r  r  r3  r  s     r   test_required_const_actions;TestInvalidArgumentConstructors.test_required_const_actions>  s>    5FV,$$TV$D -, 6,,s	   4
A	c                     U R                  SSS9  U R                  SSSS9  U R                  SS[        R                  S9  g )Nrc  parsersr-  r  )r.  r  )r.  r   )r  r6   r7   r!   s    r   "test_parsers_action_missing_paramsBTestInvalidArgumentConstructors.test_parsers_action_missing_paramsD  sK    Yy9YyvFYy*2*A*A 	 	Cr   c                 $    U R                  SSS9  g )Nrc  r  r-  r  r!   s    r   test_version_missing_params;TestInvalidArgumentConstructors.test_version_missing_paramsJ  s    Yy9r   c                 $    U R                  SSS9  g )Nr3   Trv  r  r!   s    r   test_required_positional8TestInvalidArgumentConstructors.test_required_positionalM  s    UT2r   c           	         ^  " S S[         5      m " U4S jS[        5      n[        R                  " 5       nU R	                  TUR
                  SUTTS9  U R	                  TUR
                  SUTTS9  g )Nc                       \ rS rSrSrg)ITestInvalidArgumentConstructors.test_user_defined_action.<locals>.SuccessiR  r#   Nr  r#   r   r   SuccessrI  R  rM  r   rJ  c                   .   > \ rS rSr SU 4S jjrS rSrg)HTestInvalidArgumentConstructors.test_user_defined_action.<locals>.ActioniU  c                 8   > US:X  a  UTL a  UTL a  T" 5       eg g g )Nr  r#   )r   option_stringsrU  r2  r  r  rJ  s         r   r   QTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__init__W  s2     6>'"g-"))O . ( "r   c                     g r^   r#   r   s      r   r  QTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__call__b  s    r   r#   N)F)r&   r'   r(   r)   r   r  r+   )rJ  s   r   r  rL  U  s     #(	,r   r  ru  )r.  r  r2  r  )r   r  r6   r7   r  r   )r   r  r=   rJ  s      @r   test_user_defined_action8TestInvalidArgumentConstructors.test_user_defined_actionP  sy    	i 		V 	  ((*'6#6#6!' 	 	I'6#6#6!' 	 	Ir   r#   )r&   r'   r(   r)   r*   r  r  r  r  r!  r$  r  r)  r,  r0  r4  r8  r;  r?  rB  rE  rR  r+   r#   r   r   r
  r
    sh    7,0 0
 .2 0
74%/:7)
BEF"EC:3Ir   r
  c                        \ rS rSrS rS rSrg)TestActionsReturnedio  c                 @   [         R                  " 5       nUR                  S5      nU R                  UR                  S5        UR                  SS5      nU R                  UR                  S5        UR                  SS5      nU R                  UR                  S5        g )	Nr"  r3   r  r\  rq  r   r8  r%  )r6   r7   r   r  rU  r  s      r   r_  TestActionsReturned.test_destq  s    ((*$$W-e,$$T73e,$$T40c*r   c                 4   [         R                  " 5       nUR                  SSSS[        SS/SSS	S
9	nU R	                  UR
                  S5        U R	                  UR                  S5        U R	                  UR                  S5        U R	                  UR                  [        5        U R	                  UR                  SS/5        U R	                  UR                  S5        U R	                  UR                  S5        U R	                  UR                  S	5        g )Nr"  r  r0  r  r  r  r}  BARrr  )r  r2  r  r   r  rN  r  rU  )r6   r7   r   r  r  r  r2  r  r   r  rN  r  rU  r  s      r   	test_miscTestActionsReturned.test_miscz  s    ((*$$WCr-/cAq6*/U % L 	s+r*,c*!Q0e,/e,r   r#   N)r&   r'   r(   r)   r_  rZ  r+   r#   r   r   rU  rU  o  s    +-r   rU  c                   ,    \ rS rSrS rS rS rS rSrg)TestConflictHandlingi  c                 J    U R                  [        [        R                  SS9  g )Nr3   )conflict_handler)r  r  r6   r7   r!   s    r   test_bad_type"TestConflictHandling.test_bad_type  s"    *h&=&=+0 	 	2r   c                    [         R                  " 5       nUR                  S5        U R                  [         R                  UR                  S5        UR                  S5        U R                  [         R                  UR                  S5        g )Nr   ru  )r6   r7   r   r  rX  r<   s     r   test_conflict_error(TestConflictHandling.test_conflict_error  sn    ((*D!(00 --t	5H%(00 --x	9r   c                    [         R                  nU" SSS9nUR                  SSS9  UR                  SSS9  U R                  UR	                  5       [
        R                  " S5      5        UR                  S	S
S9  UR                  S	SS9  U R                  UR	                  5       [
        R                  " S5      5        g )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
            ru  OLD_SPAMrT  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
            )r6   r7   r   r  rP  r  r  )r   r5  r=   s      r   test_resolve_error'TestConflictHandling.test_resolve_error  s    ,,
)DDw/Dw/++-x @ 0 	 	Hj9Hj9++-x @ 0 	r   c                    [         R                  " 5       nUR                  5       nUR                  SS/S9  U R	                  [         R
                  UR                  S5        U R	                  [         R
                  UR                  S5        U R	                  [         R
                  UR                  SS/S9  U R	                  [         R
                  UR                  SS/S9  g )Nfullnamealiasr  r   )r6   r7   r)  r+  r  rX  )r   r=   sps      r   test_subparser_conflict,TestConflictHandling.test_subparser_conflict  s    ((*""$
j7)4(00--	5(00--	2(00--:, 	 	H(00--7) 	 	Er   r#   N)	r&   r'   r(   r)   r`  rc  ri  ro  r+   r#   r   r   r]  r]    s    292Er   r]  c                   N    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rSrg)TestOptionalsHelpVersionActionsi  z!Test the help and version actionsc                    U R                  [        5       nUR                  UR                  5       5        S S S 5        U R	                  UR                  5       WR                  R                  5        g ! , (       d  f       NC= fr^   )r  r   rG   r  r  rP  r  r   )r   r=   r  r  s       r   assertPrintHelpExit3TestOptionalsHelpVersionActions.assertPrintHelpExit  sY    23rhnn./ 4++-r||/B/BC 43s    A33
Bc                 F    U R                  [        UR                  U5        g r^   )r  r   rG   rI  s      r   r  9TestOptionalsHelpVersionActions.assertArgumentParserError  s    -v/@/@$Gr   c                     [        5       nUR                  SSSSS9  U R                  US5        U R                  US5        U R                  [        [
        US5        g )	Nr  r  r  r  r  rA   r}  format_versionr   r   rt  r  rB  r   r<   s     r   test_version,TestOptionalsHelpVersionActions.test_version  sV    +-D+iO  .  2.'6;KLr   c                    [        SS9nUR                  SSSSS9  U R                  [        5       nUR	                  S/5        S S S 5        U R                  SWR                  R                  5        g ! , (       d  f       N5= f)	NPPPr!  r  r  r  z%(prog)s 3.5r  zPPP 3.5
r   r   r  r   rG   r  r  r   r  s      r   test_version_format3TestOptionalsHelpVersionActions.test_version_format  sl    +7D+iX23rtf% 4bll&9&9: 43s   A33
Bc                     [        SS9nUR                  SSSSS9  U R                  US5        U R                  US	5        U R                  [        [
        US
5        g )NFr  r  r  r  r  r  rA   r}  ry  )r   r   r  r  rB  r   r<   s     r   test_version_no_help4TestOptionalsHelpVersionActions.test_version_no_help  sX    +U;D+iO&&vt4&&vx8.'6;KLr   c                    [        SS9nUR                  SSSS9  U R                  [        5       nUR	                  S/5        S S S 5        U R                  SWR                  R                  5        g ! , (       d  f       N5= f)Nr  r!  r  r  z%(prog)s 3.7r  zXXX 3.7
r  r  s      r   test_version_action3TestOptionalsHelpVersionActions.test_version_action  sj    +7DNK23rtf% 4bll&9&9: 43s   A22
B c                     [        SS9nU R                  US5        U R                  US5        U R                  US5        U R                  US5        g )NFr  rA   r}  r  r  )r   r  r<   s     r   test_no_help,TestOptionalsHelpVersionActions.test_no_help  sL    +U;&&vt4&&vx8&&vt4&&v{;r   c                     [        5       nUR                  SSS9  UR                  SSS9  U R                  US5        U R                  US5        U R                  US5        U R	                  [
        [        US5        g )	Nr   rN  r-  r8  r  r  r  ry  )r   r   rt  r  r  rB  r   r<   s     r   test_alternate_help_version;TestOptionalsHelpVersionActions.test_alternate_help_version  su    +-D0D3  .&&vt4&&v{;.'6;KLr   c                 R   [        5       nUR                  SSSS9  UR                  SSS9  UR                  S5        / S	QnUS
S/-   nU HZ  nU H  nU< SU< 3nM     U R                  UWS-  5        U R                  XS-  5        U R                  [        [
        US5        M\     g )Nr  r  r  r  r   r,  r-  r  )r$   r   r3   z-x barzbaz -xz--bad-optionzfoo bar bazz %s rA   r}  ry  rz  )r   r=   valid_prefixesvalid_suffixesprefixsuffixr  s          r   !test_help_version_extra_argumentsATestOptionalsHelpVersionActions.test_help_version_extra_arguments  s    +-K	5ID6C  ?'>=*II$F((.7 )$$VVd];$$Vh->?ngv?OP %r   r#   N)r&   r'   r(   r)   r*   rt  r  r{  r  r  r  r  r  r  r+   r#   r   r   rr  rr    s8    +D
HM;M;<MQr   rr  c                   H    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rSrg)TestStringsi  z3Test str()  and repr() on Optionals and Positionalsc                 Z    [         [        4 H  nU R                  U" U5      U5        M     g r^   )r  r"  r  )r   objresult_stringrB   s       r   assertStringEqualTestStrings.assertStringEqual  s$    $KDT#Y6  r   c                 j    [         R                  " / SQSSSS/ SQSSS	S
9	nSnU R                  X5        g )N)r"  r  r  r  r  r  r0  r  r  r  FHELPMETAVAR	rN  rU  r   r  r  r  r  rN  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', deprecated=False))r6   r  r  )r   optionr  s      r   test_optionalTestStrings.test_optional  sE    0	3 	
 	v.r   c                 |    [         R                  " / S[        SS/ SQSSSS9	nS	[        -  nU R                  X5        g )
Nr%  r  r  )r  g      ?r  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', deprecated=False))r6   r  r  r  )r   argumentr  s      r   test_argumentTestStrings.test_argument,  sO    ??#	   #(( 	
 	x0r   c                 T    [         R                  " SSS9nSnU R                  X5        g )Nr0  r  ru  zNamespace(foo=42, bar='spam')r6   r  r  r   r  r  s      r   test_namespaceTestStrings.test_namespace>  s'    BF30r*r   c                 Z    [         R                  " S0 SS0D6nSnU R                  X5        g )N"quotezNamespace(**{'"': 'quote'})r#   r  r  s      r   'test_namespace_starkwargs_notidentifier3TestStrings.test_namespace_starkwargs_notidentifierC  s,    13.12r*r   c                 ^    [         R                  " SSS0SS0D6nSnU R                  X5        g )Nr!  r  r  r  z Namespace(a=1, **{'"': 'quote'})r#   r  r  s      r   2test_namespace_kwargs_and_starkwargs_notidentifier>TestStrings.test_namespace_kwargs_and_starkwargs_notidentifierH  s1    6!6W~67r*r   c                 Z    [         R                  " S0 SS0D6nSnU R                  X5        g )NvalidTzNamespace(valid=True)r#   r  r  s      r   $test_namespace_starkwargs_identifier0TestStrings.test_namespace_starkwargs_identifierM  s,    27D/2(r*r   c                 t    [         R                  " SS9nS[         R                  -  nU R                  X5        g )Nr  r!  zvArgumentParser(prog='PROG', usage=None, description=None, formatter_class=%r, conflict_handler='error', add_help=True))r6   r7   HelpFormatterr  )r   r=   r  s      r   test_parserTestStrings.test_parserR  s:    ((f5'556 	 	v.r   r#   N)r&   r'   r(   r)   r*   r  r  r  r  r  r  r  r  r+   r#   r   r   r  r    s-    =7/$1$+
+
+
+
/r   r  c                   &    \ rS rSrS rS rS rSrg)TestNamespacei^  c                     [         R                  " 5       nU R                  [        [        US5        [         R                  " SSS9nU R                  UR                  S5        U R                  UR                  S5        g )Nr%  r0  r  r  )r6   r  r  rB  r   r  r!  r  r  s     r   test_constructorTestNamespace.test_constructor`  s^    !.'2s;"/r"v&r   c                    [         R                  " SSS9n[         R                  " SSS9n[         R                  " SS9n[         R                  " SS9nU R                  X5        U R                  X5        U R                  X5        U R                  X#5        U R                  X$5        U R	                  X:g  5        U R	                  X:g  5        U R	                  X#:g  5        U R	                  X$:g  5        g )Nr  r  r  )r  r!  )r!  r  )r6   r  r  assertNotEqual
assertTrue)r   ns1ns2ns3ns4s        r   test_equalityTestNamespace.test_equalityh  s      1*  1*  1%  1%"C%C%C%C%
#
#
#
#r   c                     [         R                  " SSS9nU R                  UR                  S 5      [        5        U R                  UR                  S 5      [        5        g )Nr  r  r  )r6   r  rN  r   NotImplemented__ne__r  s     r   $test_equality_returns_notimplemented2TestNamespace.test_equality_returns_notimplementedx  s@    !q)biio~6biio~6r   r#   N)r&   r'   r(   r)   r  r  r  r+   r#   r   r   r  r  ^  s    '$ 7r   r  c                   &    \ rS rSrS rS rS rSrg)TestEncodingi  c                     [         R                  R                  U5      u  pUS-  n[        USSS9 nUR	                  5         S S S 5        g ! , (       d  f       g = f)Nz.pyr7  r   ry   )rb   rk   splitextr{   rP  )r   rk   r   rF  s       r   _test_module_encoding"TestEncoding._test_module_encoding  sD    ''""4($g.!FFH /..s   A
Ac                 B    U R                  [        R                  5        g r^   )r  r6   __file__r!   s    r   test_argparse_module_encoding*TestEncoding.test_argparse_module_encoding  s    ""8#4#45r   c                 .    U R                  [        5        g r^   )r  r  r!   s    r   "test_test_argparse_module_encoding/TestEncoding.test_test_argparse_module_encoding  s    ""8,r   r#   N)r&   r'   r(   r)   r  r  r  r+   r#   r   r   r  r    s    6-r   r  c                       \ rS rSrS rSrg)TestArgumentErrori  c                 l    Sn[         R                  " S U5      nU R                  [        U5      U5        g )Nzmy error here)r6   rX  r  r  )r   r	  r   s      r   test_argument_error%TestArgumentError.test_argument_error  s-    &&tS1US)r   r#   N)r&   r'   r(   r)   r  r+   r#   r   r   r  r    s    *r   r  c                       \ rS rSrS rSrg)TestArgumentTypeErrori  c                    S n[        SSS9nUR                  SUS9  U R                  [        5       nUR	                  S/5        S S S 5        U R                  SWR                  R                  5        g ! , (       d  f       N5= f)	Nc                 .    [         R                  " S5      e)Nspam!)r6   ArgumentTypeErrorr  s    r   r  <TestArgumentTypeError.test_argument_type_error.<locals>.spam  s    ,,W55r   r  FrX  r%  r  r  z-usage: PROG x
PROG: error: argument x: spam!
)r   r   r  r   rG   r  r  r   )r   r  r=   r  s       r   test_argument_type_error.TestArgumentTypeError.test_argument_type_error  su    	6 ,%HCd+23rug& 4J,,	. 43s   A55
Br#   N)r&   r'   r(   r)   r  r+   r#   r   r   r  r    s    
.r   r  c                   &    \ rS rSrS rS rS rSrg)TestMessageContentErrori  c                    [        SSS9nUR                  S[        S9  UR                  S[        SS9  UR                  S	[        S
S9  U R	                  [
        5       nUR                  / 5        S S S 5        [        WR                  5      nU R                  US5        U R                  US5        U R                  US	5        U R	                  [
        5       nUR                  S/5        S S S 5        [        UR                  5      nU R                  US5        U R                  US5        U R                  US	5        U R	                  [
        5       nUR                  SS/5        S S S 5        [        UR                  5      nU R                  US5        U R                  US5        U R                  US	5        g ! , (       d  f       GNR= f! , (       d  f       N= f! , (       d  f       N}= f)Nr  r$   r  req_posr  -req_optTr  need_oner  )r   r  req_optmyXargumentz
-req_opt=1)
r   r   r  r  r  r   rG   r  rJ   r  r   r=   r  r	  s       r   %test_missing_argument_name_in_message=TestMessageContentError.test_missing_argument_name_in_message  s   +rBIC0JS4@JS<23rb! 4",,i(i(j)23r}o. 4",,i(i(j)23r}l;< 4",,i(i(j)# 43 43 43s$   F;GG;
G

G
G,c                    [        SSS9nUR                  S[        S9  UR                  S[        SS9  UR                  S	[        S
SS9  U R                  [        5       nUR                  / 5        S S S 5        [        WR                  5      nU R                  US5        U R                  US5        U R                  US5        U R                  [        5       nUR                  S/5        S S S 5        [        UR                  5      nU R                  US5        U R                  US5        U R                  US5        g ! , (       d  f       N= f! , (       d  f       Nk= f)Nr  r$   r  r  r  z	--req_optTr  z	--opt_optr  )r   r  r  r  opt_optz--req_opt=1)r   r   r  r  r  r  r   rG   r  rJ   r  r  s       r   %test_optional_optional_not_in_message=TestMessageContentError.test_optional_optional_not_in_message  s*   +rBIC0KcDAKd#$( 	 	*23rb! 4",,i(i(i(23r}o. 4",,i(i(i( 43 43s   E E 
E
Ec                 N   [        SSS9nUR                  S5        UR                  SSSS9  U R                  [        5       nUR	                  / 5        S S S 5        [        WR                  5      nU R                  US5        U R                  US5        g ! , (       d  f       NH= f)	Nr  r$   r  r  optional_positionalr  r  r  )	r   r   r  r   rG   r  r  rJ   r  r  s       r   'test_optional_positional_not_in_message?TestMessageContentError.test_optional_positional_not_in_message  s    +rBI&1fM23rb! 4",,i(34	 43s   B
B$r#   N)r&   r'   r(   r)   r  r  r  r+   r#   r   r   r  r    s    *2)&5r   r  c                       \ rS rSrS rSrg)TestTypeFunctionCallOnlyOncei  c                    ^  U 4S jn[         R                  " 5       nUR                  SUSS9  UR                  SR	                  5       5      nT R                  [        SS9U5        g )Nc                 *   > TR                  U S5        g)Nr  foo_convertedr  )string_to_convertr   s    r   r  LTestTypeFunctionCallOnlyOnce.test_type_function_call_only_once.<locals>.spam  s    .8"r   r"  rq  rf  z--foo spam!r  r=  )r6   r7   r   rG   r  r  r   r   r  r=   r   s   `   r   !test_type_function_call_only_once>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_once  s[    	# ((*G$>  !4!4!670$7r   r#   N)r&   r'   r(   r)   r  r+   r#   r   r   r  r    s    8r   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestDeprecatedArgumentsi   c                 H   [         R                  " 5       nUR                  SSSS9  [        5        nUR	                  SS/5        S S S 5        WR                  5       nU R                  US5        U R                  UR                  S5      S5        [        5        nUR	                  SS/5        S S S 5        UR                  5       nU R                  US	5        U R                  UR                  S5      S5        [        5        nUR	                  / S
Q5        S S S 5        UR                  5       nU R                  US5        U R                  US	5        U R                  UR                  S5      S5        [        5        nUR	                  / SQ5        S S S 5        UR                  5       nU R                  US5        U R                  UR                  S5      S5        g ! , (       d  f       GN= f! , (       d  f       GNI= f! , (       d  f       N= f! , (       d  f       N= f)NrA  r"  T)
deprecatedr  %warning: option '--foo' is deprecatedis deprecatedr  "warning: option '-f' is deprecated)r"  r  rA  hamr  )r"  r  r"  r  )	r6   r7   r   r   rG   r   rJ   r  r  r   r=   r   s      r   test_deprecated_option.TestDeprecatedArguments.test_deprecated_option  s   ((*D'd;&w/0 "!HIo6:&tVn- "!EFo6:&<= "!HI!EFo6:&?@ "!HIo6:/    s/   GG0H>H
G-0
G?
H
H!c                 `   [         R                  " 5       nUR                  SS[         R                  SS9  [	        5        nUR                  S/5        S S S 5        WR                  5       nU R                  US5        U R                  UR                  S5      S5        [	        5        nUR                  S/5        S S S 5        UR                  5       nU R                  US5        U R                  UR                  S5      S5        [	        5        nUR                  S	/5        S S S 5        UR                  5       nU R                  US
5        U R                  UR                  S5      S5        [	        5        nUR                  SS	/5        S S S 5        UR                  5       nU R                  US5        U R                  US
5        U R                  UR                  S5      S5        g ! , (       d  f       GN= f! , (       d  f       GNH= f! , (       d  f       N= f! , (       d  f       N= f)NrA  r"  T)r.  r  r  r  r  r  r  z(warning: option '--no-foo' is deprecatedr  )
r6   r7   r   r  r   rG   r   rJ   r  r  r  s      r   test_deprecated_boolean_option6TestDeprecatedArguments.test_deprecated_boolean_option  s   ((*D'(2P2P]ab&wi( "!HIo6:&tf% "!EFo6:&zl+ "!KLo6:&w
34 "!HI!KLo6:/    s0    G*(G<H8H*
G9<
H
H
H-c                 J   [         R                  " 5       nUR                  SSSS9  UR                  SSSS9  [        5        nUR	                  / 5        S S S 5        WR                  5       nU R                  UR                  S5      S5        [        5        nUR	                  S/5        S S S 5        UR                  5       nU R                  US	5        U R                  UR                  S5      S
5        [        5        nUR	                  SS/5        S S S 5        UR                  5       nU R                  US	5        U R                  US5        U R                  UR                  S5      S5        g ! , (       d  f       GN$= f! , (       d  f       N= f! , (       d  f       N= f)Nr3   r  Tr  r  rq  r  r   r  %warning: argument 'foo' is deprecatedr  r  z%warning: argument 'bar' is deprecatedr  	r6   r7   r   r   rG   r   r  r  rJ   r  s      r   test_deprecated_arguments1TestDeprecatedArguments.test_deprecated_arguments<  sN   ((*E>E>&b! "o6:&vh' "!HIo6:&vuo. "!HI!HIo6:! 
  s$   E1F?F1
F 
F
F"c                    [         R                  " 5       nUR                  SSSS9  [        5        nUR	                  / 5        S S S 5        WR                  5       nU R                  UR                  S5      S5        [        5        nUR	                  S/5        S S S 5        UR                  5       nU R                  US5        U R                  UR                  S5      S	5        [        5        nUR	                  SS
/5        S S S 5        UR                  5       nU R                  US5        U R                  UR                  S5      S	5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       Nu= f)Nr3   r  Tr  r  r   r  r  r  r  r  r  s      r   test_deprecated_varargument3TestDeprecatedArguments.test_deprecated_varargumentS  s(   ((*E>&b! "o6:&vh' "!HIo6:&vuo. "!HIo6: 
  s#   EE .E1
E 
E.1
E?c                 H   [         R                  " 5       nUR                  5       nUR                  SS/SS9  UR                  S5        [	        5        nUR                  S/5        S S S 5        WR                  5       nU R                  UR                  S5      S5        [	        5        nUR                  S/5        S S S 5        UR                  5       nU R                  US5        U R                  UR                  S5      S	5        [	        5        nUR                  S/5        S S S 5        UR                  5       nU R                  US
5        U R                  UR                  S5      S	5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       Nu= f)Nr3   rr  T)r  r  rq  r  r   z$warning: command 'foo' is deprecatedr  z$warning: command 'baz' is deprecated)
r6   r7   r)  r+  r   rG   r   r  r  rJ   )r   r=   r.  r   s       r   test_deprecated_subparser1TestDeprecatedArguments.test_deprecated_subparserh  sF   ((***,
eeWFe$&ug& "o6:&ug& "!GHo6:&ug& "!GHo6: 
  s$   E0)FF0
E?
F
F!r#   N)
r&   r'   r(   r)   r  r  r  r  r!  r+   r#   r   r   r
  r
     s    ;:;:;.;*;r   r
  c                   ,    \ rS rSrS rS rS rS rSrg)TestTypeFunctionCalledOnDefaulti  c                    ^  U 4S jn[         R                  " 5       nUR                  SUSS9  UR                  / 5      nT R	                  [        SS9U5        g )Nc                 *   > TR                  U S5        g)Nr   r  r  )int_to_convertr   s    r   r  ]TestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default.<locals>.spam  s    ^Q/"r   r"  r   rf  r=  r6   r7   r   rG   r  r   r  s   `   r   /test_type_function_call_with_non_string_defaultOTestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default  sQ    	# ((*G$:  $D)r   c                     S n[         R                  " 5       nUR                  SUSS9  UR                  / 5      nU R	                  [        SS9U5        g )Nc                     g)Nr  r#   )r'  s    r   r  YTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default.<locals>.spam  s    "r   r"  0rf  r  r=  r)  r  s       r   +test_type_function_call_with_string_defaultKTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default  sQ    	# ((*G$<  $0$7r   c                     S n[         R                  " 5       nUR                  SUSS9  UR                  / 5      nU R	                  [        SS9U5        g )Nc                     U S-   $ )Nr  r#   )str_to_converts    r   r  YTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default.<locals>.extend  s    !C''r   --testr  rf  z**)r  r)  )r   r  r=   r   s       r   )test_no_double_type_conversion_of_defaultITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default  sR    	( ((*H63?  $ 	-r   c                     [         R                  " 5       nUR                  SS[        / SS9  UR	                  / 5      nU R                  UR                  / 5        g )Nr6  r  r  )rU  r   r  r.  )r6   r7   r   r  rG   r  r  rI  s      r   test_issue_159060TestTypeFunctionCalledOnDefault.test_issue_15906  sT     ((*H6$&x 	 	9  $B'r   r#   N)	r&   r'   r(   r)   r*  r0  r7  r:  r+   r#   r   r   r$  r$    s    	*8
.(r   r$  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestParseKnownArgsi  c                 P    [         R                  " 5       nUR                  S5        g )Nr#   r6   r7   rG   r<   s     r   test_arguments_tuple'TestParseKnownArgs.test_arguments_tuple      ((*"r   c                 P    [         R                  " 5       nUR                  / 5        g r^   r?  r<   s     r   test_arguments_list&TestParseKnownArgs.test_arguments_list  rB  r   c                 r    [         R                  " 5       nUR                  S5        UR                  S5        g )Nr%  r$  r6   r7   r   rG   r<   s     r   test_arguments_tuple_positional2TestParseKnownArgs.test_arguments_tuple_positional  s,    ((*C &!r   c                 t    [         R                  " 5       nUR                  S5        UR                  S/5        g )Nr%  rG  r<   s     r   test_arguments_list_positional1TestParseKnownArgs.test_arguments_list_positional  s.    ((*C 3% r   c                     [         R                  " 5       nUR                  S5        UR                  SR	                  5       5      u  p#U R                  [        SS9U5        U R                  SS/U5        g )Nr"  z--foo F --bar --bazFr=  r\  r  )r6   r7   r   rG  r  r  r   )r   r=   r   extrass       r   test_optionals!TestParseKnownArgs.test_optionals  sc    ((*G$../D/J/J/LMd+'7+V4r   c                 (   [         R                  " 5       nUR                  SSS[        S9  UR                  SSS9  UR                  S5        / S	QnUR	                  U5      u  p4U R                  [        S
SSS9U5        U R                  / SQU5        g )Nr  r  r  )r  r2  r   ru  r  r-  ra  )ro  r  r"  r  r.  r  r  Tro  )vr  ra  )r  r"  r  )r6   r7   r   r  rG  r  r   )r   r=   r   r   rO  s        r   
test_mixedTestParseKnownArgs.test_mixed  s    ((*D13?H];H%2..t4ad37>,f5r   c                     [         R                  " 5       nUR                  SSSS9  UR                  / 5      nU R	                  [        / S9U5        g )Nr%  r  r  )r  r  r$  r)  rI  s      r   test_zero_or_more_optional-TestParseKnownArgs.test_zero_or_more_optional  sI    ((*CsJ?  $b4(r   r#   N)r&   r'   r(   r)   r@  rD  rH  rK  rP  rT  rW  r+   r#   r   r   r=  r=    s%    "
!
5	6)r   r=  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestDoubleDashi  c                 P   [         R                  " SS9nUR                  SS5        UR                  SSS9  UR                  S/5      nU R	                  [        S	/ S
9U5        U R                  [         R                  SUR                  SS	/5        UR                  S/5      nU R	                  [        S	/ S
9U5        U R                  [         R                  SUR                  SS	/5        UR                  / SQ5      nU R	                  [        SSS/S
9U5        UR                  / SQ5      nU R	                  [        SSS/S
9U5        UR                  / SQ5      nU R	                  [        S / SQS
9U5        UR                  / SQ5      nU R	                  [        S / SQS
9U5        g )NFrT  rA  r"  rq  r  r  --foo=--rA  ru  z(argument -f/--foo: expected one argument-f--)r"  r!  rA  r  r  r!  r  r  )r!  r  r"  r  )r!  rA  r  r"  r  )r!  rA  r  rA  r  r"  r  )r!  r  rA  r  r"  r  )r6   r7   r   rG   r  r   rW  rX  rI  s      r   test_single_argument_option*TestDoubleDash.test_single_argument_option  s   ((u=D'*E-  *."-t4x556	0   &*"-t4x556d|	-   !?@#s4d;  !9:#s4d;  !?@*BCTJ  !JK*MNPTUr   c                    [         R                  " SS9nUR                  SSSS9  UR                  SSS9  UR                  S/5      nU R	                  [        S	// S
9U5        UR                  SS	/5      nU R	                  [        / / S
9U5        UR                  S/5      nU R	                  [        S	// S
9U5        UR                  SS	/5      nU R	                  [        / / S
9U5        UR                  / SQ5      nU R	                  [        SS/SS/S
9U5        UR                  / SQ5      nU R	                  [        SS/SS/S
9U5        UR                  / SQ5      nU R	                  [        S / SQS
9U5        UR                  / SQ5      u  p#U R	                  [        S/SS/S
9U5        U R	                  US	S/5        g )NFrT  rA  r"  r  r  rq  r\  rA  ru  r]  )r"  r!  r  rA  r  r  r!  r  r  r  )r!  r  r"  r  r  )r!  rA  r  r"  r  r  )r!  r  r"  r  rA  r  )r6   r7   r   rG   r  r   rG  )r   r=   r   r   s       r   test_multiple_argument_option,TestDoubleDash.test_multiple_argument_option  s   ((u=D'5E-  *.B/6  '41+T2  &*B/6  $.+T2  !DEc
c
;TB  !>?c
c
;TB  !DE*GH$O,,-PQ
C:6=c{+r   c                 D   [         R                  " SS9nUR                  S5        UR                  SSS9  UR                  / SQ5      nU R	                  [        SS	S
/S9U5        UR                  / SQ5      nU R	                  [        SS	S
/S9U5        UR                  / SQ5      nU R	                  [        SS	S
/S9U5        UR                  / SQ5      nU R	                  [        S/ SQS9U5        UR                  / SQ5      nU R	                  [        S/ SQS9U5        g )NFrT  r3   rq  r  r  rA  r!  r  r  r!  r  r  ru  r!  rA  r  r  r!  r  rA  r  r!  rA  r  rA  r  r  rA  r  )rA  rA  r!  rA  r  r  rA  r)  rI  s      r   test_multiple_double_dashes*TestDoubleDash.test_multiple_double_dashes  s	   ((u=E"E-  !67#s4d;  !67#s4d;  !67#s4d;  !<=)9:DA  !BC*?@$Gr   c                    [         R                  " SS9nUR                  S5        UR                  SSS9  UR                  / SQ5      nU R	                  [        SS	S
/S9U5        UR                  / SQ5      nU R	                  [        SS	S
/S9U5        UR                  / SQ5      nU R	                  [        S/ SQS9U5        UR                  / SQ5      nU R	                  [        S/ SQS9U5        [         R                  " SS9nUR                  S5        UR                  SSS9  UR                  / SQ5      nU R	                  [        S/ SQS9U5        g )NFrT  r3   rq  r  r  rd  r!  r  r  ru  re  rf  rh  rg  r"  )r"  r!  rA  r  rA  r  )rA  r  rA  r  r)  rI  s      r   test_remainderTestDoubleDash.test_remainder"  s7   ((u=E"E/  !67#s4d;  !67#s4d;  !67)9:DA  !<=)9:DA((u=G$E/  !EF)?@$Gr   c                 .   [         R                  " SS9nUR                  S5        UR                  5       nUR	                  S5      nUR                  S5        UR                  SSS9  UR                  / S	Q5      nU R                  [        S
SSS/S9U5        UR                  / SQ5      nU R                  [        S
S / SQS9U5        UR                  / SQ5      nU R                  [        S
S / SQS9U5        UR                  / SQ5      nU R                  [        S
S / SQS9U5        UR                  / SQ5      nU R                  [        S
SSS/S9U5        UR                  / SQ5      nU R                  [        S
SSS/S9U5        UR                  / SQ5      nU R                  [        S
S / SQS9U5        UR                  / SQ5      nU R                  [        S
S / SQS9U5        U R                  [         R                  SUR
                  / SQ5        g )NFrT  r3   rb  rA  rq  r  r  )r%  rb  r!  r  rA  r  r%  r  r!  r  r3   rF  rq  )r%  rb  r!  r  rA  rA  r  )r!  r  rA  r  )r%  rb  r!  rA  r  rA  r  )r%  rb  rA  r!  r  rA  r  )r%  rA  rb  r!  r  rA  r  )rA  r%  rb  r!  r  rA  r  )r%  rb  rA  r!  rA  r  )r!  rA  r  )r%  rA  rb  rA  r!  rA  r  invalid choice: '--')rA  r%  rA  rb  r!  r  
r6   r7   r   r)  r+  rG   r  r   rW  rX  r   r=   r.  r0  r   s        r   test_subparserTestDoubleDash.test_subparser6  s   ((u=E"**,
''.T"U#.  !BCsc
;TB  !HIt1FGN  !HIt1FGN  !HIt1FGN  !HIsc
;TB  !HIsc
;TB  !CDt1ABDI  !IJt1ABDIx55"A	Cr   c                    [         R                  " SS9nUR                  SSS9  UR                  5       nUR	                  S5      nUR                  S5        UR                  SSS9  UR                  / S	Q5      nU R                  [        S
S/SSS/S9U5        U R                  [         R                  SUR
                  / SQ5        g )NFrT  r"  r  r  rb  rA  rq  )	r"  r%  r  rA  rb  r!  r  rA  r  r%  r  r  r!  r  ro  rp  )r"  r%  rA  rA  rb  r!  r  rq  rr  s        r   -test_subparser_after_multiple_argument_option<TestDoubleDash.test_subparser_after_multiple_argument_optionR  s    ((u=G3/**,
''.T"U#.  !VWc
cSzBDIx55"J	Lr   r#   N)r&   r'   r(   r)   r^  ra  ri  rl  rs  rv  r+   r#   r   r   rZ  rZ    s%    V0,.H H(C8Lr   rZ  c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestIntermixedArgsie  c           	         [         R                  " SS9nUR                  SSS9  UR                  SSSS	9nUR                  S
5        UR                  SS[        S9  SR	                  5       nUR                  U5      nU R                  [        SS
S/ SQS9U5        UR                  U5      u  pEU R                  [        SS
SS/S9U5        U R                  SS/U5        UR                  U5      u  pEU R                  [        SS
S/ SQS9U5        U R                  / U5        SR	                  5       nUR                  U5      u  pEU R                  [        SS
S/ SQS9U5        U R                  S/U5        SR	                  5       nUR                  U5      u  pEU R                  [        SS
S/ SQS9U5        U R                  S/U5        SR	                  5       nUR                  U5      u  pEU R                  [        SS
S/ SQS9U5        U R                  S/U5        U R                  UR                  5        U R                  UR                  S5        g )Nr  r!  r"  r3   rT  r\  rq  Trl  cmdrestr  )r  r   zcmd --foo x 1 --bar y 2 3r  r%  r  )rq  r{  r3   r|  r  r  r.  z!cmd --foo x --error 1 2 --bar y 3z--errorz!cmd --foo x 1 --error 2 --bar y 3z!cmd --foo x 1 2 --error --bar y 3)r6   r7   r   r  r  parse_intermixed_argsr  r   rG  parse_known_intermixed_argsrq  r!  r  )r   r=   rq  r   r   rO  s         r   
test_basicTestIntermixedArgs.test_basicf  s)   ((f5G%0!!'!EE"F#C8*002++D1CiH$O..t4CqcBDI#sV,99$?CiH$OV$ 388:99$?CiH$O)f-288:99$?CiH$O)f-288:99$?CiH$O)f- 	&,,'t,r   c                 d   [        SS9nUR                  S5        UR                  S5        UR                  SSS9  SR                  5       nU R                  [        5       nUR                  U5        S S S 5        U R                  [        WR                  5      S	5        g ! , (       d  f       N4= f)
Nr  r!  r3  r%  r  r  r  r  z\.\.\.)	r   r   r  r  r   r}  rJ   r  r  )r   r=   r   r  s       r   rl  !TestIntermixedArgs.test_remainder  s    +8D!C Cu-!!# y)R((. *R\\*I6 *)s   !B!!
B/c                 N   [         R                  " SSS9nUR                  SS9nUR                  SSSS	9  UR                  S
SS9  UR                  SSSSS9  UR	                  SR                  5       5      nU R                  [        SS/SS S9U5        UR	                  SR                  5       5      nU R                  [        SS/SS S9U5        U R                  [         R                  SUR                  SR                  5       5        U R                  UR                  S5        g )Nr  Fr  rU  Trv  r"  r,  r}  r  ru  r~  r  ra  r  rc  r  r  z	--foo 1 2rr  r  )ra  r3   r  z	1 --foo 2z-one of the arguments --foo --spam is requiredrq  )r6   r7   r  r   r}  r  r  r   rW  rX  r  r   r=   r   r   s       r   test_required_exclusive*TestIntermixedArgs.test_required_exclusive  s   ((fEJ33T3B7<eD8&1HC8L++K,=,=,?@C:4dCTJ++K,=,=,?@C:4dCTJx55?,,ekkm	= 	.r   c                    [         R                  " SSS9nUR                  SS9nUR                  SSSS	9  UR                  S
SS9  UR                  SSSSS9  UR	                  S/5      nU R                  [        SS SS9U5        UR	                  SS/5      nU R                  [        SS SS/S9U5        U R                  [         R                  SUR                  / 5        U R                  [         R                  SUR                  / SQ5        U R                  [         R                  SUR                  / SQ5        U R                  UR                  S5        g )Nr  Fr  Trv  r"  r,  r}  r  ru  r~  r  ra  r  rc  r  r  r  r!  r  z4one of the arguments --foo --spam badger is requiredz0argument badger: not allowed with argument --foo)r"  r!  r  )r!  r"  r  )
r6   r7   r  r   r}  r  r   rW  rX  r  r  s       r   'test_required_exclusive_with_positional:TestIntermixedArgs.test_required_exclusive_with_positional  sL   ((fEJ33T3B7<eD8&183(K++WI64<dC++S#J7D#sDdKx55F,,b	2 	x55B,,.A	C 	x55B,,.A	C 	.r   c                 Z    [        SS9nU R                  [        UR                  S/5        g )Nr  r!  r!  )r   r  r   r}  r<   s     r   test_invalid_args$TestIntermixedArgs.test_invalid_args  s'    +8-v/K/KcUSr   r#   N)
r&   r'   r(   r)   r  rl  r  r  r  r+   r#   r   r   ry  ry  e  s    $-L7/ /,Tr   ry  c                       \ rS rSrS rSrg)!TestIntermixedMessageContentErrori  c                 N   [        SSS9nUR                  S[        S9  UR                  S[        SS9  U R	                  [
        5       nUR                  / 5        S S S 5        [        WR                  5      nU R                  US5        U R                  US	5        U R	                  [
        5       nUR                  / 5        S S S 5        [        UR                  5      nU R                  US5        U R                  US	5        g ! , (       d  f       N= f! , (       d  f       NY= f)
Nr  r$   r  r  r  r  Tr  r  )
r   r   r  r  r  r   rG   r  rJ   r}  r  s       r   r  GTestIntermixedMessageContentError.test_missing_argument_name_in_message  s    +rBIC0JS4@23rb! 4",,i(i(23r((, 4",,i(i( 43 43s   	D1D
D
D$r#   N)r&   r'   r(   r)   r  r+   r#   r   r   r  r    s    )r   r  c                   2   \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2r4g3)4TestAddArgumentMetavari  z,length of metavar tuple does not match nargsc                 N    [         R                  " 5       nUR                  SXS9  g )Nr"  r  r  )r6   r7   r   )r   r  r  r=   s       r   do_test_no_exception+TestAddArgumentMetavar.do_test_no_exception  s#    ((*G5Br   c                    [         R                  " 5       nU R                  [        5       nUR	                  SXS9  S S S 5        U R                  WR                  R                  S   U R                  5        g ! , (       d  f       NB= f)Nr"  r  r   )	r6   r7   r  r  r   r  r  r   EXPECTED_MESSAGE)r   r  r  r=   r  s        r   do_test_exception(TestAddArgumentMetavar.do_test_exception  sf    ((*z*buF +**1-t/D/DE +*   A88
Bc                 $    U R                  S SS9  g )Nrr  r  r  r!   s    r   test_nargs_None_metavar_string5TestAddArgumentMetavar.test_nargs_None_metavar_string  s    !!c!:r   c                 4    U R                  S [        5       S9  g )Nr  r  tupler!   s    r   test_nargs_None_metavar_length06TestAddArgumentMetavar.test_nargs_None_metavar_length0  s    T57;r   c                 $    U R                  S SS9  g )Nr(  r  r  r!   s    r   test_nargs_None_metavar_length16TestAddArgumentMetavar.test_nargs_None_metavar_length1  s    !!f!=r   c                 $    U R                  S SS9  g )Nrr  r  r  r  r!   s    r   test_nargs_None_metavar_length26TestAddArgumentMetavar.test_nargs_None_metavar_length2  s    T:>r   c                 $    U R                  S SS9  g )Nr"  r  r  r!   s    r   test_nargs_None_metavar_length36TestAddArgumentMetavar.test_nargs_None_metavar_length3  s    T?Cr   c                 $    U R                  SSS9  g )Nr  rr  r  r  r!   s    r   "test_nargs_optional_metavar_string9TestAddArgumentMetavar.test_nargs_optional_metavar_string      !!S!9r   c                 4    U R                  S[        5       S9  g )Nr  r  r  r!   s    r   #test_nargs_optional_metavar_length0:TestAddArgumentMetavar.test_nargs_optional_metavar_length0       S%':r   c                 $    U R                  SSS9  g )Nr  r(  r  r  r!   s    r   #test_nargs_optional_metavar_length1:TestAddArgumentMetavar.test_nargs_optional_metavar_length1      !!V!<r   c                 $    U R                  SSS9  g )Nr  r  r  r  r!   s    r   #test_nargs_optional_metavar_length2:TestAddArgumentMetavar.test_nargs_optional_metavar_length2  s    S*=r   c                 $    U R                  SSS9  g )Nr  r"  r  r  r!   s    r   #test_nargs_optional_metavar_length3:TestAddArgumentMetavar.test_nargs_optional_metavar_length3	      S/Br   c                 $    U R                  SSS9  g )Nr  rr  r  r  r!   s    r   $test_nargs_zeroormore_metavar_string;TestAddArgumentMetavar.test_nargs_zeroormore_metavar_string  r  r   c                 4    U R                  S[        5       S9  g )Nr  r  r  r!   s    r   %test_nargs_zeroormore_metavar_length0<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length0  r  r   c                 $    U R                  SSS9  g )Nr  r(  r  r  r!   s    r   %test_nargs_zeroormore_metavar_length1<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length1  r  r   c                 $    U R                  SSS9  g )Nr  r  r  r  r!   s    r   %test_nargs_zeroormore_metavar_length2<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length2      !!Z!@r   c                 $    U R                  SSS9  g )Nr  r"  r  r  r!   s    r   %test_nargs_zeroormore_metavar_length3<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length3  r  r   c                 $    U R                  SSS9  g )Nr  rr  r  r  r!   s    r   #test_nargs_oneormore_metavar_string:TestAddArgumentMetavar.test_nargs_oneormore_metavar_string  r  r   c                 4    U R                  S[        5       S9  g )Nr  r  r  r!   s    r   $test_nargs_oneormore_metavar_length0;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length0"  r  r   c                 $    U R                  SSS9  g )Nr  r(  r  r  r!   s    r   $test_nargs_oneormore_metavar_length1;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length1%  s    S&9r   c                 $    U R                  SSS9  g )Nr  r  r  r  r!   s    r   $test_nargs_oneormore_metavar_length2;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length2(  r  r   c                 $    U R                  SSS9  g )Nr  r"  r  r  r!   s    r   $test_nargs_oneormore_metavar_length3;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length3+  r  r   c                 $    U R                  SSS9  g )Nr  rr  r  r  r!   s    r   #test_nargs_remainder_metavar_string:TestAddArgumentMetavar.test_nargs_remainder_metavar_string0  s    !!s!;r   c                 4    U R                  S[        5       S9  g )Nr  r  )r  r  r!   s    r   $test_nargs_remainder_metavar_length0;TestAddArgumentMetavar.test_nargs_remainder_metavar_length03  s    !!uw!?r   c                 $    U R                  SSS9  g )Nr  r(  r  r  r!   s    r   $test_nargs_remainder_metavar_length1;TestAddArgumentMetavar.test_nargs_remainder_metavar_length16  s    !!v!>r   c                 $    U R                  SSS9  g )Nr  r  r  r  r!   s    r   $test_nargs_remainder_metavar_length2;TestAddArgumentMetavar.test_nargs_remainder_metavar_length29  s    !!z!Br   c                 $    U R                  SSS9  g )Nr  r"  r  r  r!   s    r   $test_nargs_remainder_metavar_length3;TestAddArgumentMetavar.test_nargs_remainder_metavar_length3<  s    !!!Gr   c                 $    U R                  SSS9  g )NA...rr  r  r  r!   s    r    test_nargs_parser_metavar_string7TestAddArgumentMetavar.test_nargs_parser_metavar_stringA  s    !!!<r   c                 4    U R                  S[        5       S9  g )Nr  r  r  r!   s    r   !test_nargs_parser_metavar_length08TestAddArgumentMetavar.test_nargs_parser_metavar_length0D  s    VUW=r   c                 $    U R                  SSS9  g )Nr  r(  r  r  r!   s    r   !test_nargs_parser_metavar_length18TestAddArgumentMetavar.test_nargs_parser_metavar_length1G  s    !!!?r   c                 $    U R                  SSS9  g )Nr  r  r  r  r!   s    r   !test_nargs_parser_metavar_length28TestAddArgumentMetavar.test_nargs_parser_metavar_length2J  s    VZ@r   c                 $    U R                  SSS9  g )Nr  r"  r  r  r!   s    r   !test_nargs_parser_metavar_length38TestAddArgumentMetavar.test_nargs_parser_metavar_length3M  s    V_Er   c                 $    U R                  SSS9  g )Nr  rr  r  r  r!   s    r   test_nargs_1_metavar_string2TestAddArgumentMetavar.test_nargs_1_metavar_stringR      !!3!7r   c                 4    U R                  S[        5       S9  g )Nr  r  r  r!   s    r   test_nargs_1_metavar_length03TestAddArgumentMetavar.test_nargs_1_metavar_length0U      Q8r   c                 $    U R                  SSS9  g )Nr  r(  r  r  r!   s    r   test_nargs_1_metavar_length13TestAddArgumentMetavar.test_nargs_1_metavar_length1X  s    !!6!:r   c                 $    U R                  SSS9  g )Nr  r  r  r  r!   s    r   test_nargs_1_metavar_length23TestAddArgumentMetavar.test_nargs_1_metavar_length2[      Q
;r   c                 $    U R                  SSS9  g )Nr  r"  r  r  r!   s    r   test_nargs_1_metavar_length33TestAddArgumentMetavar.test_nargs_1_metavar_length3^      Q@r   c                 $    U R                  SSS9  g )Nr  rr  r  r  r!   s    r   test_nargs_2_metavar_string2TestAddArgumentMetavar.test_nargs_2_metavar_stringc  r	  r   c                 4    U R                  S[        5       S9  g )Nr  r  r  r!   s    r   test_nargs_2_metavar_length03TestAddArgumentMetavar.test_nargs_2_metavar_length0f  r		  r   c                 $    U R                  SSS9  g )Nr  r(  r  r  r!   s    r   test_nargs_2_metavar_length13TestAddArgumentMetavar.test_nargs_2_metavar_length1i      Q7r   c                 $    U R                  SSS9  g )Nr  r  r  r  r!   s    r   test_nargs_2_metavar_length23TestAddArgumentMetavar.test_nargs_2_metavar_length2l  s    !!:!>r   c                 $    U R                  SSS9  g )Nr  r"  r  r  r!   s    r   test_nargs_2_metavar_length33TestAddArgumentMetavar.test_nargs_2_metavar_length3o  r	  r   c                 $    U R                  SSS9  g )Nr  rr  r  r  r!   s    r   test_nargs_3_metavar_string2TestAddArgumentMetavar.test_nargs_3_metavar_stringt  r	  r   c                 4    U R                  S[        5       S9  g )Nr  r  r  r!   s    r   test_nargs_3_metavar_length03TestAddArgumentMetavar.test_nargs_3_metavar_length0w  r		  r   c                 $    U R                  SSS9  g )Nr  r(  r  r  r!   s    r   test_nargs_3_metavar_length13TestAddArgumentMetavar.test_nargs_3_metavar_length1z  r	  r   c                 $    U R                  SSS9  g )Nr  r  r  r  r!   s    r   test_nargs_3_metavar_length23TestAddArgumentMetavar.test_nargs_3_metavar_length2}  r	  r   c                 $    U R                  SSS9  g )Nr  r"  r  r  r!   s    r   test_nargs_3_metavar_length33TestAddArgumentMetavar.test_nargs_3_metavar_length3  s    !!?!Cr   r#   N)5r&   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/	  r2	  r+   r#   r   r   r  r    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                   4    \ rS rSrSrSrS rS rS rS r	Sr
g	)
TestInvalidNargsi  z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                    [         R                  " 5       nU R                  [        5       nUR	                  SUS9  S S S 5        U R                  WR                  R                  S   U R                  5        g ! , (       d  f       NB= fNr"  r  r   )	r6   r7   r  r  r   r  r  r   EXPECTED_RANGE_MESSAGEr   r  r=   r  s       r   do_test_range_exception(TestInvalidNargs.do_test_range_exception  sf    ((*z*bu5 +**1-t/J/JK +*r  c                    [         R                  " 5       nU R                  [        5       nUR	                  SUS9  S S S 5        U R                  WR                  R                  S   U R                  5        g ! , (       d  f       NB= fr7	  )	r6   r7   r  r  r   r  r  r   EXPECTED_INVALID_MESSAGEr9	  s       r   do_test_invalid_exception*TestInvalidNargs.do_test_invalid_exception  sf    ((*z*bu5 +**1-t/L/LM +*r  c                 @    U R                  SS9  U R                  SS9  g )Nr!  r  abcd)r>	  r!   s    r   test_nargs_alphabetic&TestInvalidNargs.test_nargs_alphabetic  s$    &&S&1&&V&4r   c                 "    U R                  SS9  g )Nr   r  )r:	  r!   s    r   test_nargs_zero TestInvalidNargs.test_nargs_zero  s    $$1$-r   r#   N)r&   r'   r(   r)   r=	  r8	  r:	  r>	  rB	  rE	  r+   r#   r   r   r5	  r5	    s'    4LLN5.r   r5	  c                        \ rS rSrS rS rSrg)TestImportStari  c                 p    [         R                   H"  nU R                  [        [         U5      5        M$     g r^   )r6   __all__r  r  rJ  s     r   r  TestImportStar.test  s%    $$DOOGHd34 %r   c                 P   [        [        5      R                  5        VVs/ s HD  u  pUR                  S5      (       a  M  US:X  a  M%  [        R
                  " U5      (       a  MB  UPMF     nnnU R                  [        U5      [        [        R                  5      5        g s  snnf )Nr   ngettext)	r   r6   r   
startswithinspectismoduler  r   rJ	  )r   rt   r  r   s       r   'test_all_exports_everything_but_modules6TestImportStar.test_all_exports_everything_but_modules  s      $H~335
5OOC( ,0J,>  ##E* 5 	 
 	x/?/?(@A
s   B"B"	B"&B"r#   N)r&   r'   r(   r)   r  rQ	  r+   r#   r   r   rH	  rH	    s    5Br   rH	  c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )TestWrappingMetavari  c                 z   > [         TU ]  5         [        S5      U l        SnU R                  R	                  SUS9  g )N9this_is_spammy_prog_with_a_long_name_sorry_about_the_namez<http[s]://example:1234>z--proxyrT  )r   rX   r   r=   r   )r   r  r   s     r   rX   TestWrappingMetavar.setUp  s9    0G

 -  G <r   c                     U R                   R                  5       nU R                  U[        R                  " S5      5        g )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>
            )r=   rP  r  r  r  )r   	help_texts     r   test_help_with_metavar*TestWrappingMetavar.test_help_with_metavar  s4    KK++-	HOO 5 % 	r   r=   )r&   r'   r(   r)   rX   rZ	  r+   r,   r-   s   @r   rT	  rT	    s    =	 	r   rT	  c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSrg)TestExitOnErrori  c                 v    [         R                  " SSS9U l        U R                  R                  SS[        S9  g )NFr  )rU  r  z
--integersN)r  r   )r6   r7   r=   r   r  r!   s    r   rX   TestExitOnError.setUp  s3    --EDGI  s Er   c                     U R                   R                  SR                  5       5      nU R                  U[        R
                  " SS95        g )Nz--integers 4r  )integers)r=   rG   r  r  r6   r  r  s     r   !test_exit_on_error_with_good_args1TestExitOnError.test_exit_on_error_with_good_args  s:    [[##N$8$8$:;X//;<r   c                     U R                  [        R                  5         U R                  R	                  SR                  5       5        S S S 5        g ! , (       d  f       g = f)Nz--integers a)r  r6   rX  r=   rG   r  r!   s    r    test_exit_on_error_with_bad_args0TestExitOnError.test_exit_on_error_with_bad_args  s=    x556KK"">#7#7#9: 766s   *A
A!c                     U R                  [        R                  SU R                  R                  SR                  5       5        g Nz!unrecognized arguments: --foo barr  )rW  r6   rX  r=   rG   r  r!   s    r   test_unrecognized_args&TestExitOnError.test_unrecognized_args  s4    x55B#{{55{7H7H7J	Lr   c                     U R                  [        R                  SU R                  R                  SR                  5       5        g rj	  )rW  r6   rX  r=   r}  r  r!   s    r   !test_unrecognized_intermixed_args1TestExitOnError.test_unrecognized_intermixed_args  s4    x55B#{{@@+BSBSBU	Wr   c                     U R                   R                  S5        U R                   R                  S5        U R                  [        R                  SU R                   R
                  / 5        g )Nrq  rr  /the following arguments are required: bar, baz$r=   r   rW  r6   rX  rG   r!   s    r   test_required_args"TestExitOnError.test_required_args  sN      '  'x55P#{{55r	;r   c                     U R                   R                  S5        U R                   R                  SSS9  U R                  [        R                  SU R                   R
                  / 5        g )Nrq  rr  BaZrT  z/the following arguments are required: bar, BaZ$rr	  r!   s    r   test_required_args_with_metavar/TestExitOnError.test_required_args_with_metavar  sS      '   6x55P#{{55r	;r   c                     U R                   R                  S5        U R                   R                  SSS9  U R                  [        R                  SU R                   R
                  / 5        g )Nrq  rr  r  r  rq	  rr	  r!   s    r   test_required_args_n$TestExitOnError.test_required_args_n  sS      '  a 0x55P#{{55r	;r   c                     U R                   R                  S5        U R                   R                  SSSS9  U R                  [        R                  SU R                   R
                  / 5        g )Nrq  rr  r  )ro  r  r  r  z3the following arguments are required: bar, B, A, Z$rr	  r!   s    r   !test_required_args_n_with_metavar1TestExitOnError.test_required_args_n_with_metavar  sU      '  a Ix55T#{{55r	;r   c                     U R                   R                  S5        U R                   R                  SSS9  U R                  [        R                  SU R                   R
                  / 5        g )Nrq  rr  r  r  *the following arguments are required: bar$rr	  r!   s    r   test_required_args_optional+TestExitOnError.test_required_args_optional  S      '  c 2x55K#{{55r	;r   c                     U R                   R                  S5        U R                   R                  SSS9  U R                  [        R                  SU R                   R
                  / 5        g )Nrq  rr  r  r  r	  rr	  r!   s    r   test_required_args_zero_or_more/TestExitOnError.test_required_args_zero_or_more  r	  r   c                     U R                   R                  S5        U R                   R                  SSS9  U R                  [        R                  SU R                   R
                  / 5        g )Nrq  rr  r  r  rq	  rr	  r!   s    r   test_required_args_one_or_more.TestExitOnError.test_required_args_one_or_more  sS      '  c 2x55P#{{55r	;r   c                     U R                   R                  S5        U R                   R                  SSSS9  U R                  [        R                  SU R                   R
                  / 5        g )Nrq  rr  r  )BaZ1BaZ2r  z9the following arguments are required: bar, BaZ1\[, BaZ2]$rr	  r!   s    r   +test_required_args_one_or_more_with_metavar;TestExitOnError.test_required_args_one_or_more_with_metavar  sV      '  c;K Lx55[#{{55r	;r   c                     U R                   R                  S5        U R                   R                  SSS9  U R                  [        R                  SU R                   R
                  / 5        g )Nrq  rr  r  r  r	  rr	  r!   s    r   test_required_args_remainder,TestExitOnError.test_required_args_remainder  sS      '  e 4x55K#{{55r	;r   c                     U R                   R                  SS9nUR                  S5        UR                  S5        U R                  [        R
                  SU R                   R                  / 5        g )NTrv  r\  r  z,one of the arguments --bar --baz is requiredr=   r  r   rW  r6   rX  rG   r   r   s     r   %test_required_mutually_exclusive_args5TestExitOnError.test_required_mutually_exclusive_args$  s]    88$8G7#7#x55M#{{55r	;r   c                 \   U R                   R                  5       nUR                  S5        UR                  SSSS9  U R                  [        R
                  SU R                   R                  / SQ5        U R                  [        R
                  SU R                   R                  / S	Q5        g )
Nr\  rr  r  rv	  r  z.argument BaZ: not allowed with argument --bar$r\  r!  r  z.argument --bar: not allowed with argument BaZ$r!  r\  r  r	  r	  s     r   >test_conflicting_mutually_exclusive_args_optional_with_metavarNTestExitOnError.test_conflicting_mutually_exclusive_args_optional_with_metavar,  s    88:7#5U;x55O#{{557J	L 	x55O#{{557J	Lr   c                 \   U R                   R                  5       nUR                  S5        UR                  SSSS9  U R                  [        R
                  SU R                   R                  / SQ5        U R                  [        R
                  SU R                   R                  / S	Q5        g )
Nr\  rr  r  )BAZ1r  z/argument BAZ1: not allowed with argument --bar$r	  z/argument --bar: not allowed with argument BAZ1$r	  r	  r	  s     r   Ctest_conflicting_mutually_exclusive_args_zero_or_more_with_metavar1STestExitOnError.test_conflicting_mutually_exclusive_args_zero_or_more_with_metavar17  s    88:7#5Y?x55P#{{557J	L 	x55P#{{557J	Lr   c                 \   U R                   R                  5       nUR                  S5        UR                  SSSS9  U R                  [        R
                  SU R                   R                  / SQ5        U R                  [        R
                  SU R                   R                  / S	Q5        g )
Nr\  rr  r  )r	  BAZ2r  z8argument BAZ1\[, BAZ2]: not allowed with argument --bar$r	  z8argument --bar: not allowed with argument BAZ1\[, BAZ2]$r	  r	  r	  s     r   Ctest_conflicting_mutually_exclusive_args_zero_or_more_with_metavar2STestExitOnError.test_conflicting_mutually_exclusive_args_zero_or_more_with_metavar2B  s    88:7#55EFx55Z#{{557J	L 	x55Z#{{557J	Lr   c                 `   U R                   R                  S5        U R                   R                  SSS9  U R                   R                  S5        U R                  [        R                  SU R                   R
                  S/5        U R                  [        R                  SU R                   R
                  S	/5        U R                  [        R                  S
U R                   R
                  / SQ5        U R                  [        R                  SU R                   R
                  / SQ5        g )Nr  r  r,  r-  --fooglez7ambiguous option: --foob could match --foobaz, --foobler  z:ambiguous option: --foob=1 could match --foobaz, --fooble$--foob=1z8ambiguous option: --foob could match --foobaz, --fooble$)r  rr  r	  r  )r	  r	  r  rr	  r!   s    r   test_ambiguous_option%TestExitOnError.test_ambiguous_optionM  s      ,  L A  ,x55IKK""XJ	0 	x55LKK""ZL	2 	x55JKK""$D	F 	x55LKK""$A	Cr   c                     U R                   R                  S5        U R                  [        R                  SU R                   R
                  S/5        g )Nr   z)No such file or directory: 'no-such-file'z@no-such-filerr	  r!   s    r   test_os_errorTestExitOnError.test_os_error^  s@      (x55J#{{557H	Jr   r\	  N)r&   r'   r(   r)   rX   rd	  rg	  rk	  rn	  rs	  rw	  rz	  r}	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r+   r#   r   r   r^	  r^	    sn    F
=;L
W
;;;;;;;;;;	L	L	LC"Jr   r^	  c                       \ rS rSrS rSrg)TestTranslationsii  c                 .    U R                  [        5        g r^   )assertMsgidsEqualr6   r!   s    r   test_translations"TestTranslations.test_translationsk  s    x(r   r#   N)r&   r'   r(   r)   r	  r+   r#   r   r   r	  r	  i  s    )r   r	  c                  @    0 [         l        [        5       [        l        g r^   )rG  rO  r  rn  r#   r   r   tearDownModuler	  o  s    EJEJr   __main__r  z--snapshot-update(  r8   rE   rO	  r   r=  rb   ro   rm   r   r  r_   unittestr6   r  enumr   test.supportr   r   test.support.i18n_helperr   r   r   TextIOWrapperr
   rO   r/   skip_unless_working_chmodr  r[   r   r   r   r   r   r7   r   r   r   r  r   r  r+  r:  r@  rP  rR  rX  rZ  rh  rk  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#  r0  r3  r5  r:  r<  r\  r`  rb  re  rg  ri  rk  rm  ro  rt  rw  ry  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   r9  r`  r  	eq_stderrrl  r  
eq_bstderrrG  rU  rb  rh  rn  skip_if_dac_overriderv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r1  rY  re  rn  rs  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r3  r7  r9  r?  rD  rH  rN  rR  rW  r\  r_  rd  rj  rl  rn  rp  rr  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
  rU  r]  rr  r  r  r  r  r  r  r  r
  r$  r=  rZ  ry  r  r  r5	  rH	  rT	  r^	  r	  r	  r&   lenr   r;   mainr#   r   r   <module>r	     sr      	  	   
       ( " W :""" :$FH%% F:x    $$D6 D %D.& ) )%) %# L>!8!8 >q9D q9f 		&'7Cn n 4. ^  ~ .
> 
n . $ &N & ( , .^  
 
	> 	 . .  .> &. "> "
N 
~ N N > > >@
 
	 		> 	 &^  ~  &N "~ "n "n &N &
 
@~ N N 	^ 		N 	N > . > >    ( "~   $  ~ n ^ N 	n 	^ N . , . ,> 
^ 
	N 	>  
. 

. 
   ~ "
 

 
> &~ &.    ^ 6. 2 (. **L. *Z\> DKx K0 h h , ,, W%h'	h'	n-	/
/
/F /"L. 03< 3"\> .'F '" L.   , L.   & \>     
] 
  
,8 ,,
 
$~ . ,> ,>8 >.>N >BJX J$~ T T0[ [B!+H !+NM Mf@&x @&D1?f 1?h '8  F( (V7H B!'8 !H*( *Z''8 'T%7H %P' 'R/('8 /(d GX  F w  F (  Lf 	-	
	(	
	&	
	1	
	0	
	7	
	0	
	>	X0h X0|8X 8."( "&Q1$ Q1f 		*>5"E"l "H3B| 3Bl,< ,^ >1< 1h% %P3 3l6L 6r< ,\ >L :!| !H< 2# #L< D!L !H\ 4| 01\ 1ha7X a7H+ +\\ "
< 
L *| (L 4 *| (< *\ .< 0< 6\ 8.l .b-\ -`0| 0dL (L 2 :' 'V< :% %XEIh EIV-( -<3E8 3EtEQh EQXE/( E/V7H 7J-8 -$* *.H .$65h 65z
88 
8"};h };H+(h +(b*) *)Z|LX |LF\T \T~) )0eDX eDP.x .@BX B ( 0VJh VJz)+ ) z
388}qSXXa[,??$X.MMO r   