
    5P@i;                    X   d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddlm
Z
 ddZ G d d	ej                        Z G d
 dej                        Z G d dej                        Z G d dej                        Z G d dej                        Zedk(  r ej(                          yy)z!Unittest for Argument Definition.    )annotationsN)absltest)argument_parser)flag_defc                P    t        j                         }| j                  |       |S )z>Returns a new ArgumentParser with `flag` added as an argument.)r   ArgumentParseradd_argument_to_parser)flagparsers     t/home/www/lebenam.kofcorporation.com/venv/lib/python3.12/site-packages/google/generativeai/notebook/flag_def_test.py_new_parserr      s#    ++-F'M    c                  6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	SingleValueFlagDefTestc                   t        j                  ddt        d      }t        |      j	                  dg      }| j                  d|j                         t        |      j	                  ddg      }| j                  d|j                         y )	NvaluevT)name
short_name
parse_typerequiredz--value=forty-one	forty-onez-v	forty-two)r   SingleValueFlagDefstrr   
parse_argsassertEqualr   selfr
   resultss      r   test_short_namez&SingleValueFlagDefTest.test_short_name"   sx    **SS4
 d#..0C/DEgmm4d#..k/BCgmm4r   c                   t        j                  dt        d      }| j                  t        j
                  d      5  t        |      j                  dg       d d d        | j                  t        j
                  d      5  t        |      j                  g d       d d d        | j                  t        j
                  d      5  t        |      j                  g d	       d d d        t        |      j                  dd
g      }| j                  d
|j                         y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ZxY w)Nr   Tr   r   r   expected 1 argument--valuez!unrecognized arguments: forty-two)r%   r   r   z!Cannot set --value more than once)r%   r   r%   r   r   )
r   r   r   assertRaisesRegexr   ParserErrorr   r   r   r   r   s      r   test_cardinalityz'SingleValueFlagDefTest.test_cardinality,   s    **CRVW ##O$?$?AVW 	6(()5	6 ##'')L
 	P (()NO	P ##'')L
 	[ (()YZ	[
 d#..	;/GHgmm4#	6 	6	P 	P	[ 	[s#   D$D0D<$D-0D9<Ec                H   t        j                  dt        d      }t        |      j	                  dg      }| j                  d|j                         | j                  t        j                  d      5  t        |      j	                  g        d d d        y # 1 sw Y   y xY w)Nr   Tr#   --value=forty-twor   $the following arguments are required)
r   r   r   r   r   r   r   r&   r   r'   )r   req_flagr    s      r   test_requiredz$SingleValueFlagDefTest.test_requiredC   s    ..
 h'224G3HIgmm4 ##'')O
 	1 !,,R0	1 	1 	1s   4BB!c                F   | j                  t        d      5  t        j                  dt        d       d d d        t        j                  dt        dd      }t        |      j                  dg      }| j                  d|j                         t        |      j                  g       }| j                  d|j                         | j                  t        j                  d	      5  t        |      j                  d
g       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz(Optional flags must have a default valuer   Fr#   zeror   r   r   default_valuer*   r   r$   r%   )r&   
ValueErrorr   r   r   r   r   r   r   r   r'   r   opt_flagr    s      r   test_optionalz$SingleValueFlagDefTest.test_optionalU   s    ##J0Z[ 	''	 .. 	
 h'224G3HIgmm4 h'2226/ ##O$?$?AVW 	:!,,i[9	: 	:1	 	0	: 	:s   D&DDD c                   t        j                  dt        dd      }t        |      j	                  dg      }| j                  d|j                         t        |      j	                  g       }| j                  |j                         | j                  t        j                  d      5  t        |      j	                  dg       ddd       y# 1 sw Y   yxY w)	z2Make sure None can be accepted as a default value.r   FNr0   r*   r   r$   r%   )r   r   r   r   r   r   r   assertIsNoner&   r   r'   r3   s      r   test_default_is_nonez+SingleValueFlagDefTest.test_default_is_noner   s    ..	
 h'224G3HIgmm4 h'2226'--( ##O$?$?AVW 	:!,,i[9	: 	: 	:s   *CCc                   | j                  t        d      5  t        j                  dt        dd       d d d        t        j                  dt        dd      }| j                  t
        j                  d      5  t        |      j                  dd	g       d d d        t        |      j                  dd
g      }| j                  d|j                         y # 1 sw Y   xY w# 1 sw Y   NxY w)Nz>Default value must be of the same type as the destination typer   Fr/   r0   r   zinvalid int value: 'forty-two'r%   r   42*   )r&   r2   r   r   intr   r'   r   r   r   r   )r   int_flag_defr    s      r   test_type_conversionz+SingleValueFlagDefTest.test_type_conversion   s    ##L
 		 ''$				  22	
 ##O$?$?Aab 	K%00)[1IJ	K l+66	47HIW]]+/		 		&	K 	Ks   C:C$C!$C-c                X   d
d}t        j                  dt        |d      }t        |      j	                  ddg      }| j                  d|j                         | j                  t        j                  d      5  t        |      j	                  dd	g       d d d        y # 1 sw Y   y xY w)Nc                F    t        j                  |       rt        d      | S NMust not be NANmathisnanr2   xs    r   _check_is_not_nanzASingleValueFlagDefTest.test_validation.<locals>._check_is_not_nan       zz!} !233Hr   r   T)r   r   parse_to_dest_type_fnr   r%   0.25      ?rB   nanrG   floatreturnrO   )
r   r   rO   r   r   r   r   r&   r   r'   )r   rH   float_flag_defr    s       r   test_validationz&SingleValueFlagDefTest.test_validation   s    	
 "44"3	
 n-88)V9LMw}}-##O$?$?ARS 	G'22Iu3EF	G 	G 	Gs   :B  B)N)
__name__
__module____qualname__r!   r(   r-   r5   r8   r>   rR    r   r   r   r   !   s&    55.1$:::,,6Gr   r   c                      e Zd ZdZdZdZy)
ColorsEnumredgreenblueN)rS   rT   rU   REDGREENBLUErV   r   r   rX   rX      s    
CEDr   rX   c                      e Zd Zd Zd Zd Zy)EnumFlagDefTestc                   | j                  t        d      5  t        j                  dd       d d d        | j                  t        d      5  t        j                  ddt
        t               d d d        | j                  t        d      5  t        j                  ddt
        t               d d d        t        j                  ddt
        	       y # 1 sw Y   xY w# 1 sw Y   rxY w# 1 sw Y   >xY w)
Nz(missing 1 required keyword-only argumentcolorT)r   r   z'Cannot set "parse_type" for EnumFlagDef)r   r   	enum_typer   z&Cannot set "dest_type" for EnumFlagDef)r   r   rc   	dest_type)r   r   rc   )r&   	TypeErrorr   EnumFlagDefr2   rX   r<   r   r   s    r   test_constructionz!EnumFlagDefTest.test_construction   s    ##I/YZ 	>  g=	>
 ##J0YZ 	  $		 ##J0XY 	c  g
^ab	c 	'DJO!	> 	>
	 		c 	cs#   C"C "C,C C),C5c                   t        j                  ddt        t        j                        }| j	                  t
        j                  d      5  t        |      j                  dg       d d d        t        |      j                  dg      }| j                  t        j                  |j                         t        |      j                  dg      }| j                  t        j                  |j                         t        |      j                  dg      }| j                  t        j                  |j                         y # 1 sw Y   xY w)	Nrb   F)r   r   rc   r1   zinvalid choice: 'teal'z--color=teal--color=red--color=green--color=blue)r   rf   rX   r\   r&   r   r'   r   r   r   rb   r]   r^   r   s      r   test_parsingzEnumFlagDefTest.test_parsing   s    ## $..	
 ##O$?$?AYZ 	;((.)9:	; d#..?7d#../@A))7==9d#../?@'--8	; 	;s   E  E	c                   | j                  t        d      5  t        j                  ddt        g d       d d d        t        j                  ddt        ddg      }| j                  t
        j                  d      5  t        |      j                  d	g       d d d        t        |      j                  d
g      }| j                  t        j                  |j                         t        |      j                  dg      }| j                  t        j                  |j                         y # 1 sw Y   xY w# 1 sw Y   xY w)NzInvalid value in "choices"rb   T)rY   rZ   teal)r   r   rc   choicesrY   rZ   zinvalid choice: 'blue'rl   rj   rk   )r&   r2   r   rf   rX   r   r'   r   r   r   r\   rb   r]   r   s      r   test_choiceszEnumFlagDefTest.test_choices   s   ##J0LM 	  $0		 ## G$	
 ##O$?$?AYZ 	;((.)9:	; d#..?7d#../@A))7==9/	 	"	; 	;s    D->D9-D69EN)rS   rT   rU   rh   rm   rq   rV   r   r   r`   r`      s    P(9&:r   r`   c                  6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	MultiValuesFlagDefTestc                   t        j                  dt        d      }t        |      j	                  g       }| j                  |j                         t        |      j	                  ddg      }| j                  dg|j                         t        |      j	                  g d      }| j                  ddg|j                         y )NcolorsFr#   --colorsrY   rv   rY   rZ   rZ   )r   MultiValuesFlagDefr   r   r   assertEmptyru   r   r   s      r   
test_basicz!MultiValuesFlagDefTest.test_basic  s     **SSXY d#..r2(d#..
E/BC%'..1d#../KL%)7>>:r   c                L   t        j                  dt        d      }t        |      j	                  ddg      }| j                  dg|j                         | j                  t        j                  d      5  t        |      j	                  g        d d d        y # 1 sw Y   y xY w)Nru   Tr#   rv   rY   r+   )
r   rx   r   r   r   r   ru   r&   r   r'   r   s      r   r-   z$MultiValuesFlagDefTest.test_required  s    **
 d#..
E/BC%'..1 ##'')O
 	- ((,	- 	- 	-s   6BB#c                    | j                  t        d      5  t        j                  dt        dd       d d d        y # 1 sw Y   y xY w)Nz"got an unexpected keyword argumentru   Ffuschiar0   )r&   re   r   rx   r   rg   s    r   test_cannot_set_default_valuez4MultiValuesFlagDefTest.test_cannot_set_default_value#  sB    ##I/ST 	'''		 	 	s	   >Ac                    t        j                  d      }| j                  t        j                  d      5  t        |      j                  g d       d d d        y # 1 sw Y   y xY w)Nru   r   zDuplicate values "red")rv   rY   rZ   rY   )r   rx   r&   r   r'   r   r   r   r
   s     r   test_values_must_be_uniquez1MultiValuesFlagDefTest.test_values_must_be_unique.  sX    **9 ##O$?$?AYZ 	N(()LM	N 	N 	Ns   AA&c                ~   t        j                  dt        d      }| j                  t        j
                  d      5  t        |      j                  dg       d d d        | j                  t        j
                  d      5  t        |      j                  g d       d d d        y # 1 sw Y   OxY w# 1 sw Y   y xY w)Nru   Fr#   zexpected at least one argumentrv   z"Cannot set --colors more than once)rv   rY   rv   r[   )r   rx   r   r&   r   r'   r   r   r   s     r   r(   z'MultiValuesFlagDefTest.test_cardinality5  s    **
 ##O$?$?Aab 	7((*6	7 ##'')M
 	R (()PQ	R 	R		7 	7	R 	Rs   B'B3'B03B<c           
        t        j                  dt        t        dt        D cg c]  }|j                   c}      }| j                  t        j                  d      5  t        |      j                  ddg       d d d        t        |      j                  g d      }| j                  t        j                  t        j                  g|j                         y c c}w # 1 sw Y   exY w)Nru   F)r   r   rd   r   rp   zinvalid choice: 'fuschia'rv   r}   rw   )r   rx   r   rX   r   r&   r   r'   r   r   r   r\   r]   ru   )r   rG   r
   r    s       r   test_dest_type_conversionz0MultiValuesFlagDefTest.test_dest_type_conversionF  s    ** &01QWW1
 ##O$?$?A\] 	B((*i)@A	B d#../KL*..**:*:;W^^L 2	B 	Bs   CC  C)c                Z   d	d}t        j                  dt        |      }t        |      j	                  g d      }| j                  ddg|j                         | j                  t        j                  d      5  t        |      j	                  g d       d d d        y # 1 sw Y   y xY w)
Nc                F    t        j                  |       rt        d      | S rA   rC   rF   s    r   rH   zAMultiValuesFlagDefTest.test_validation.<locals>._check_is_not_nanX  rI   r   values)r   r   rJ   )r%   rK   z0.5rL   g      ?rB   )r%   rK   rM   rN   )
r   rx   rO   r   r   r   r   r&   r   r'   )r   rH   r
   r    s       r   rR   z&MultiValuesFlagDefTest.test_validationW  s    	
 **"3
 d#../IJ$gnn5##O$?$?ARS 	E(()CD	E 	E 	Es   ;B!!B*N)
rS   rT   rU   rz   r-   r~   r   r(   r   rR   rV   r   r   rs   rs     s)    ;-$	NR"M"Er   rs   c                      e Zd Zd Zd Zd Zy)BooleanFlagDefTestc                   t        j                  d      }t        |      j                  g       }| j	                  |j
                         t        |      j                  dg      }| j                  |j
                         y )Nuniquer   --unique)r   BooleanFlagDefr   r   assertFalser   
assertTruer   s      r   rz   zBooleanFlagDefTest.test_basick  s`    &&H5d#..r2(d#..
|<'r   c                   | j                  t        d      5  t        j                  dt               ddd       | j                  t        d      5  t        j                  dd        ddd       | j                  t        d      5  t        j                  dd	g
       ddd       y# 1 sw Y   xxY w# 1 sw Y   MxY w# 1 sw Y   yxY w)z6Check that invalid constructor arguments are rejected.z*dest_type cannot be set for BooleanFlagDefr   )r   rd   Nz6parse_to_dest_type_fn cannot be set for BooleanFlagDefc                     y)NTrV   rF   s    r   <lambda>z5BooleanFlagDefTest.test_constructor.<locals>.<lambda>{  s    r   )r   rJ   z(choices cannot be set for BooleanFlagDefT)r   rp   )r&   r2   r   r   boolrg   s    r   test_constructorz#BooleanFlagDefTest.test_constructort  s    ##J0\] 	C##TB	C##P
 	Y ##X	Y ##J0Z[ 	C##D6B	C 	C	C 	C	Y 	Y	C 	Cs#   B*B6C*B36B?Cc                t   t        j                  d      }| j                  t        j                  d      5  t        |      j                  ddg       d d d        | j                  t        j                  d      5  t        |      j                  ddg       d d d        y # 1 sw Y   OxY w# 1 sw Y   y xY w)Nr   r   z#error: unrecognized arguments: Truer   Truez"Cannot set --unique more than once)r   r   r&   r   r'   r   r   r   s     r   r(   z#BooleanFlagDefTest.test_cardinality  s    &&H5##'')N
 	? ((*f)=>	?
 ##'')M
 	C ((*j)AB	C 	C	? 	?
	C 	Cs   B"<B."B+.B7N)rS   rT   rU   rz   r   r(   rV   r   r   r   r   j  s    (	CCr   r   __main__)r
   zflag_def.FlagDefrP   zargparse.ArgumentParser)__doc__
__future__r   argparseenumrD   absl.testingr   google.generativeai.notebookr   r   r   TestCaser   EnumrX   r`   rs   r   rS   mainrV   r   r   <module>r      s    ( "    ! 8 1SGX.. SGl A:h'' A:HfEX.. fER C**  CF zHMMO r   