
    ai&8                       d dl mZmZmZmZmZmZmZmZm	Z	 d dl m
Z
mZmZmZmZmZmZ d dl mZmZmZmZmZmZmZ d dlmZmZmZmZmZmZ d dl mZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d dl m&Z&m'Z' ddl(m)Z) dd	l*m+Z+ dd
l,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3 ddl4Z4ddl5Z5ddl6Z6ddl7Z7ddl1Z1	 ddl8Z8	 e;  G d de2      Z> G d de2      Z? G d de2      Z@ G d de2      ZA G d de2      ZB G d de2      ZCeDdk(  r e=d      y# e9e:f$ r dZ8Y ^w xY w# e<$ r e=Z;Y hw xY w)   )	EnumMetaEnumIntEnumFlagIntFlagStrEnum
UniqueEnumAutoEnumAddValueEnum)
NamedTuple	TupleSize
MagicValueAddValueNoAliasUnique
MultiValue)AutoNumberEnumMultiValueEnumOrderedEnumuniqueskipextend_enumauto)StdlibEnumMeta
StdlibEnumStdlibIntEnum
StdlibFlagStdlibIntFlagStdlibStrEnum)pyverPY3_3PY3_4PY3_5PY3_6PY3_7PY3_11)add_stdlib_integrationremove_stdlib_integration    )OrderedDict)	timedelta)dumpsloadsPicklingErrorHIGHEST_PROTOCOL)TestCasemainNc                   .   e Zd Zd Z ej
                  ed      d        Z ej
                  ed      d        Z ej
                  e	e
k\  d      d        Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d  Z%d! Z&d" Z'd# Z(d$ Z)d% Z*d& Z+d' Z,d( Z-d) Z.d* Z/d+ Z0d, Z1d- Z2d. Z3d/ Z4d0 Z5d1 Z6d2 Z7d3 Z8d4 Z9d5 Z:d6 Z;d7 Z<e	e=k\  rd8 Z>d9 Z?d: Z@e	eAk(  rd; ZBne	e
k\  rd< ZBe	eAk\  rd= ZCd> ZDd? ZEy@)A
TestEnumV3c                     G d dt               }|| _         G d dt        t               }|| _         G d dt              }|| _         G d dt        t               }|| _        d	d
lm	}  G d d|t               }|| _
        y )Nc                       e Zd ZdZdZdZdZy) TestEnumV3.setUp.<locals>.Seasonr            N)__name__
__module____qualname__SPRINGSUMMERAUTUMNWINTER     `/home/ccuser/rateright-growth/voice-assistant/venv/lib/python3.12/site-packages/aenum/test_v3.pySeasonr6   !   s    FFFFrB   rD   c                       e Zd ZdZdZdez  Zy)#TestEnumV3.setUp.<locals>.KonstantsgB
@gJM!	@r7   N)r:   r;   r<   EPITAUrA   rB   rC   	KonstantsrF   (   s    ABb&CrB   rJ   c                        e Zd ZdZdZdZdZdZy) TestEnumV3.setUp.<locals>.Grades   r9   r8   r7   r)   N)r:   r;   r<   ABCDFrA   rB   rC   GradesrL   .   s    AAAAArB   rS   c                       e Zd ZdZdZdZdZy)%TestEnumV3.setUp.<locals>.DirectionaleastwestnorthsouthN)r:   r;   r<   EASTWESTNORTHSOUTHrA   rB   rC   DirectionalrU   6   s    DDEErB   r^   r)   )datec                       e Zd ZdZdZy)!TestEnumV3.setUp.<locals>.Holiday)  r   r   )rb   r8      N)r:   r;   r<   NEW_YEARIDES_OF_MARCHrA   rB   rC   Holidayra   >   s    !H'MrB   rf   )r   rD   floatrJ   r   rS   strr^   datetimer_   rf   )selfrD   rJ   rS   r^   r_   rf   s          rC   setUpzTestEnumV3.setUp    su    	T 	
 	t 	 #	W 	 	#t 	
 '!	(dD 	( rB   zStdlib enum not availablec                    | j                  t        | j                  t                     | j                  t	        | j                  j
                  t                     | j                  t        | j                  t                     | j                  t        | j                  t                     | j                  t	        | j                  j                  t                     | j                  t	        | j                  j                  t                     t        t        k\  r G d dt              }| j                  t        |t                     | j                  t	        |j                  t                     | j                  t        |t                     | j                  t	        |j                  t                      G d dt              }| j                  t        |t                     | j                  t	        |j                  t                     | j                  t        |t                     | j                  t	        |j                  t                     | j                  t        |t                      | j                  t	        |j                  t                      t        t"        k\  r G d dt$              }| j                  t        |t                     | j                  t	        |j                  t                     | j                  t        |t&                     | j                  t	        |j                  t&                     y y )Nc                       e Zd ZdZy)1TestEnumV3.test_stdlib_inheritence.<locals>.AFlagr   Nr:   r;   r<   onerA   rB   rC   AFlagrn   N       rB   rq   c                       e Zd ZdZy)5TestEnumV3.test_stdlib_inheritence.<locals>.AnIntFlagr   Nro   rA   rB   rC   	AnIntFlagrt   U   rr   rB   ru   c                       e Zd ZdZy)4TestEnumV3.test_stdlib_inheritence.<locals>.AStrEnum1Nro   rA   rB   rC   AStrEnumrw   _   s    rB   ry   )
assertTrue
issubclassrD   r   
isinstancer=   rS   assertFalser   rN   r    r$   r   rp   r   r   r   r&   r   r   )rj   rq   ru   ry   s       rC   test_stdlib_inheritencez"TestEnumV3.test_stdlib_inheritenceC   s    	
4;;
;<
4;;#5#5zBC
4;;
;<DKK?@
4;;==*=>DKKMM=ABE> OOJuj9:OOJuyy*=>OOJuj9:OOJuyy*=>G OOJy*=>OOJy}}jABOOJy*=>OOJy}}jABZ	=ABZ	}EFF?7 OOJx<=OOJx||Z@AZ-@AZmDE rB   c                    	 t                 G d dt              }| j                  t        d      5   G d dt              } G d d||      }d d d        t                 G d	 d
t        |      }y # 1 sw Y   %xY w# t                w xY w)Nc                        e Zd Z fdZ xZS )<TestEnumV3.test_stdlib_bad_getattribute.<locals>.BadEnumTypec                 ^    t         |   |      }t        ||       r|j                          |S N)super__getattribute__r|   	deprecate)clsnameobj	__class__s      rC   r   zMTestEnumV3.test_stdlib_bad_getattribute.<locals>.BadEnumType.__getattribute__k   s*    '248C!#s+JrB   )r:   r;   r<   r   __classcell__)r   s   @rC   BadEnumTyper   j   s     rB   r   zendless recursionc                       e Zd Zy)9TestEnumV3.test_stdlib_bad_getattribute.<locals>.BaseEnumNr:   r;   r<   rA   rB   rC   BaseEnumr   q   s    rB   r   c                       e Zd ZdZy)8TestEnumV3.test_stdlib_bad_getattribute.<locals>.BadEnumbarNr:   r;   r<   FOOrA   rB   rC   BadEnumr   s   s    CrB   r   	metaclassc                       e Zd ZdZy)9TestEnumV3.test_stdlib_bad_getattribute.<locals>.OkayEnumr   Nr   rA   rB   rC   OkayEnumr   x   s    CrB   r   )r'   r   assertRaisesRegexRecursionErrorr   r(   )rj   r   r   r   r   s        rC   test_stdlib_bad_getattributez'TestEnumV3.test_stdlib_bad_getattributef   sz    	("$n  ''8KL  z  h+    &'	z[ 	    &'s"   /A> A2A> 2A;7A> >B
z+__qualname__ requires python 3.5 or greaterc                     t        ddd      }|t               d<   t        | j                  |j                         t        | j                  |       y )NTheoryzrule law suppositionspanish_inquisition)qualname)r   globalstest_pickle_dump_loadrz   rule)rj   r   s     rC   'test_pickle_enum_function_with_qualnamez2TestEnumV3.test_pickle_enum_function_with_qualname{   s?    h 6AVW+1	'(doov{{;doov6rB   c                      G d dt         d      }| j                  t        |j                  j                  d      d       | j                  |j                  j
                  d       y )Nc                   <    e Zd ZdZdZdZdZdZdZdZ	dZ
ed	        Zy
))TestEnumV3.test_auto_init.<locals>.Planet)gITf|Dg    
BA)gQX4Eg    WAgoEg    TXA)g	Dg    (IA)gcEg   A)g[\h}Eg    ，A)g#'?TQEg   _xA)gJ-UEg    wAc                 X    d}|| j                   z  | j                  | j                  z  z  S )NgyдW=)massradius)rj   Gs     rC   surface_gravityz9TestEnumV3.test_auto_init.<locals>.Planet.surface_gravity   s)      499}dkk(ABBrB   N)r:   r;   r<   MERCURYVENUSEARTHMARSJUPITERSATURNURANUSNEPTUNEpropertyr   rA   rB   rC   Planetr      s>    +G+E,E+D+G+F+F+GC CrB   r   zmass radiusinitr7   g#@r   )r   assertEqualroundr   r   value)rj   r   s     rC   test_auto_initzTestEnumV3.test_auto_init   sP    	CT 	C 	v||;;Q?F++-CDrB   c                     G d dt         d      }| j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j
                  j                  d       | j                  |j                  j                  d       | j                  |j                  j                  d	       | j                  |j
                  j                  d
       y )Nc                       e Zd ZdZdZdZy)3TestEnumV3.test_auto_init_with_value.<locals>.Color)r   r   r)   r)   )r7   r)   r   r)   )r8   r)   r)   r   N)r:   r;   r<   REDBLUEGREENrA   rB   rC   Colorr      s    CD ErB   r   z
value, rgbr   r   r7   r8   r   r   r   )r   r   r   r   r   r   rgbrj   r   s     rC   test_auto_init_with_valuez$TestEnumV3.test_auto_init_with_value   s    	!D| 	! 	!,))1-**A.	23)4rB   c                     | j                  t              5   G d dt        t              }d d d        | j                  t              5   G d dt        t              }d d d        y # 1 sw Y   =xY w# 1 sw Y   y xY w)Nc                   "    e Zd Ze e e d Ze y)-TestEnumV3.test_auto_turns_off.<locals>.Colorc                 4    t        d| j                  z         y )NzHello!  My serial is %s.)printr   rj   s    rC   helloz3TestEnumV3.test_auto_turns_off.<locals>.Color.hello   s    4tzzABrB   N)r:   r;   r<   redgreenbluer   roserA   rB   rC   r   r      s    CrB   r   settingsc                   "    e Zd Ze e e d Ze y)r   c                      y r   rA   )rj   argss     rC   __init__z6TestEnumV3.test_auto_turns_off.<locals>.Color.__init__   s    rB   N)r:   r;   r<   r   r   r   r   r   rA   rB   rC   r   z-TestEnumV3.test_auto_turns_off.<locals>.Color   s    rB   )assertRaises	NameErrorr   r   r   s     rC   test_auto_turns_offzTestEnumV3.test_auto_turns_off   sk    y) 	z 	 y) 	z 	 		 		 	s   A(	A4(A14A=c                      G d dt         t              }| j                  t        |      |j                  |j
                  |j                  g       | j                  |j                  j                  d       y )Nc                       e Zd Zeeef y)$TestEnumV3.test_magic.<locals>.ColorNr:   r;   r<   r   r   r   rA   rB   rC   r   r          rB   r   r   r   r   r   r   listr   r   r   r   r   s     rC   
test_magiczTestEnumV3.test_magic   sO    	D: 	euyy%++uzz&JK!,rB   c                 x    | j                  t        d      5   G d dt              }d d d        y # 1 sw Y   y xY w)Nzobject is not callablec                   $    e Zd ZdZeZed        Zy)4TestEnumV3.test_ignore_not_overridden.<locals>.Color
irreleventc                 L    t        d| j                  j                                y )Nz
I am light)r   r   lowerr   s    rC   shadez:TestEnumV3.test_ignore_not_overridden.<locals>.Color.shade   s    ,		(9:rB   N)r:   r;   r<   _ignore_r   
_settings_r   r   rA   rB   rC   r   r      s    ''
; ;rB   r   r   	TypeErrorr   r   s     rC   test_ignore_not_overriddenz%TestEnumV3.test_ignore_not_overridden   s4    ##I/GH 	;; ;	; 	; 	;   09c                      G d dt         t        d      }| j                  t        |      |j                  |j
                  |j                  g       | j                  |j                  j                  d       y )Nc                       e Zd Zeeef y)*TestEnumV3.test_magic_start.<locals>.ColorNr   rA   rB   rC   r   r      r   rB   r   r)   r   startr   r   s     rC   test_magic_startzTestEnumV3.test_magic_start   sQ    	D:Q 	euyy%++uzz&JK!,rB   c                 z    | j                   }| j                  t        t        |            t        g d             y )N)r   __doc____members__r;   r=   r>   r?   r@   __init_subclass__r:   __getitem____len____contains____iter__r<   )rD   r   setdirrj   rD   s     rC   test_dir_on_classzTestEnumV3.test_dir_on_class   s2    F  	rB   c                     | j                   }| j                  t        t        |j                              t        g d             y )N)r   r   __eq____hash__r;   r   r   values)rD   r   r  r  r@   r  s     rC   test_dir_on_itemzTestEnumV3.test_dir_on_item   s3    FMM"#gh	rB   c                      G d dt               }| j                  t        t        |            t        g d             | j                  t        t        |j                              t        g d             y )Nc                       e Zd ZdZdZd Zy)5TestEnumV3.test_dir_with_added_behavior.<locals>.Testthatthosec                      d| j                   z  S )NzWowser! I'm %s!)r   r   s    rC   wowserz<TestEnumV3.test_dir_with_added_behavior.<locals>.Test.wowser   s    )DII56rB   N)r:   r;   r<   thistheser  rA   rB   rC   Testr     s    DE7rB   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  )rj   r  s     rC   test_dir_with_added_behaviorz'TestEnumV3.test_dir_with_added_behavior   s_    	74 	7
 	CI  	 	C		N#uv	rB   c                      G d dt               } G d d|      }| j                  t        t        |j                              t        g d             y )Nc                       e Zd Zd Zy)DTestEnumV3.test_dir_on_sub_with_behavior_on_super.<locals>.SuperEnumc                      y)Nzdid you see me?rA   r   s    rC   	invisiblezNTestEnumV3.test_dir_on_sub_with_behavior_on_super.<locals>.SuperEnum.invisible   s    (rB   N)r:   r;   r<   r  rA   rB   rC   	SuperEnumr     s    )rB   r  c                       e Zd ZdZy)BTestEnumV3.test_dir_on_sub_with_behavior_on_super.<locals>.SubEnumrM   N)r:   r;   r<   samplerA   rB   rC   SubEnumr     s    FrB   r!  )	r   r   r	  r
  r;   r   r   r  r  )r   r   r  r  r   )rj   r  r!  s      rC   &test_dir_on_sub_with_behavior_on_superz1TestEnumV3.test_dir_on_sub_with_behavior_on_super   sB    	) 	)	i 	C'(xy	rB   c                 v     G d dt               }| j                  t        |j                        t        u        y )Nc                       e Zd ZdZdZdZy)ATestEnumV3.test_members_are_always_ordered.<locals>.AlwaysOrderedr   r7   r8   N)r:   r;   r<   firstsecondthirdrA   rB   rC   AlwaysOrderedr%         EFErB   r)  )r   rz   typer   r*   )rj   r)  s     rC   test_members_are_always_orderedz*TestEnumV3.test_members_are_always_ordered   s,    	D 	 	]667;FGrB   c                 0   fd}| j                   | j                  j                  d       | j                  t        |        G d dt
              | j                  j                  j                         fd}| j                  t        |       y )Nc                  $     j                   dkD   y )Nr9   )r=   )rD   s   rC   bad_comparez0TestEnumV3.test_comparisons.<locals>.bad_compare   s    MMArB   r   c                       e Zd ZdZdZdZy))TestEnumV3.test_comparisons.<locals>.Partr   r7   r8   N)r:   r;   r<   r=   CLIPBARRELrA   rB   rC   Partr1    s    FDFrB   r4  c                  8    j                    j                  k   y r   )r=   r2  )r4  rD   s   rC   r/  z0TestEnumV3.test_comparisons.<locals>.bad_compare
  s    MMDII%rB   )rD   assertNotEqualr=   r   r   r   )rj   r/  r4  rD   s     @@rC   test_comparisonszTestEnumV3.test_comparisons   sp    	FMM1-)[1	4 	
 	FMM4;;7	&)[1rB   c                 Z   | j                  t              5   G d dt              }d d d        | j                  t              5   G d dt              }d d d        | j                  t              5   G d dt              }d d d        y # 1 sw Y   dxY w# 1 sw Y   CxY w# 1 sw Y   y xY w)Nc                       e Zd ZdZdZdZdZy).TestEnumV3.test_duplicate_name.<locals>.Color1r   r7   r8   r9   Nr   rA   rB   rC   Color1r:    s    rB   r;  c                       e Zd ZdZdZdZd Zy).TestEnumV3.test_duplicate_name.<locals>.Color2r   r7   r8   c                      y)Nr   rA   r   s    rC   r   z2TestEnumV3.test_duplicate_name.<locals>.Color2.red  s     rB   Nr   rA   rB   rC   Color2r=    s    !rB   r?  c                   (    e Zd Zed        ZdZdZdZy).TestEnumV3.test_duplicate_name.<locals>.Color3c                      y)NredderrA   r   s    rC   r   z2TestEnumV3.test_duplicate_name.<locals>.Color3.red   s    #rB   r   r7   r8   N)r:   r;   r<   r   r   r   r   rA   rB   rC   Color3rA    s#    $ $rB   rD  )r   r   r   )rj   r;  r?  rD  s       rC   test_duplicate_namezTestEnumV3.test_duplicate_name  s    y) 	 	 y) 	!! !	! y) 	 	 		 		! 	!	 	s#   B	B0B!	BB!B*c                     | j                  t              5   G d dt        t              }d d d        y # 1 sw Y   y xY w)Nc                       e Zd ZdZdZdZdZy):TestEnumV3.test_duplicate_value_with_unique.<locals>.Colorr   r7   r8   Nr:   r;   r<   r   r   r   rojorA   rB   rC   r   rH  )  s    rB   r   r   )r   
ValueErrorr   r   r   s     rC    test_duplicate_value_with_uniquez+TestEnumV3.test_duplicate_value_with_unique'  s3    z* 	v 	 	 	   5>c                     G d dt         t              }| j                  |j                  |j                  u        | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  t        |      d       | j                  t        |      |j                  |j                  |j                  |j                  g       y )Nc                       e Zd ZdZdZdZdZy);TestEnumV3.test_duplicate_value_with_noalias.<locals>.Colorr   r7   r8   NrI  rA   rB   rC   r   rP  0      CEDDrB   r   r   r   r9   )r   r   r}   r   rJ  r   r   lenr   r   r   r   s     rC   !test_duplicate_value_with_noaliasz,TestEnumV3.test_duplicate_value_with_noalias/  s    	D7 	
 	ejj01!,))1-UQ'euyy%++uzz5::&VWrB   c                 \     G d dt         t              }| j                  t        |d       y )Nc                       e Zd ZdZdZdZdZy)3TestEnumV3.test_noalias_value_lookup.<locals>.Colorr   r7   r8   NrI  rA   rB   rC   r   rV  <  rQ  rB   r   r   r7   )r   r   r   r   r   s     rC   test_noalias_value_lookupz$TestEnumV3.test_noalias_value_lookup;  s$    	D7 	
 	)UA.rB   c                 
    G d dt         t              }| j                  |j                  j                  d       | j                   |d      |j                         | j                  |j                  j                  d       y )Nc                       e Zd ZdZdZdZy))TestEnumV3.test_multivalue.<locals>.Colorr   r   r7   r   r8   r   Nr   rA   rB   rC   r   rZ  D  s    CEDrB   r   r   r   r   r]  )	r   r   r   r   r   assertIsr   r   r  r   s     rC   test_multivaluezTestEnumV3.test_multivalueC  sZ    	D: 	 	!,eGnekk2**K8rB   c                     | j                  t              5   G d dt        t              }d d d        y # 1 sw Y   y xY w)Nc                       e Zd ZdZdZdZy)?TestEnumV3.test_multivalue_with_duplicate_values.<locals>.Colorr[  r\  r8   r   r   Nr   rA   rB   rC   r   rb  N      "'rB   r   r   )r   rK  r   r   r   s     rC   %test_multivalue_with_duplicate_valuesz0TestEnumV3.test_multivalue_with_duplicate_valuesL  s3    z* 	((z (	( 	( 	(rM  c                     | j                  t              5   G d dt        t        t        f      }d d d        y # 1 sw Y   y xY w)Nc                       e Zd ZdZdZdZy)KTestEnumV3.test_multivalue_with_duplicate_values_and_noalias.<locals>.Colorr[  r\  rc  Nr   rA   rB   rC   r   rh  U  rd  rB   r   r   )r   r   r   r   r   r   s     rC   1test_multivalue_with_duplicate_values_and_noaliasz<TestEnumV3.test_multivalue_with_duplicate_values_and_noaliasS  s8    y) 	((
G'< (	( 	( 	(s	   ;Ac                     | j                  t        d      5   G d dt        t        t        f      }d d d        y # 1 sw Y   y xY w)Nz0MultiValue and MagicValue are mutually exclusivec                       e Zd Ze dZe y)2TestEnumV3.test_multivalue_and_auto.<locals>.Color)r8   r   Nr   rA   rB   rC   r   rl  \  s    "rB   r   r   )r   r   r   r   r   r   s     rC   test_multivalue_and_autoz#TestEnumV3.test_multivalue_and_autoZ  s;    ##I/bc 	
J'? 	 	 	s	   <Ac                 n    G d dt         t        d      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  j
                  d       | j                  |j                  j
                  d       | j                  t        |d	             y )
Nc                       e Zd ZdZdZy)2TestEnumV3.test_autonumber_and_init.<locals>.FieldChar, Date, Logical, etc.Field offset in recordNr:   r;   r<   TYPESTARTrA   rB   rC   Fieldrp  b      .D,ErB   rv  r   r   r   r   r7   rq  rr  _order_)r   r   r   rt  ru  r   r}   hasattrrj   rv  s     rC   test_autonumber_and_initz#TestEnumV3.test_autonumber_and_inita  s    	-GhY 	- 	Q'a(++-HI,,.FG	23rB   c                      G d dt         d      }| j                  |j                  d       | j                  |j                  j                  d       y )Nc                       e Zd ZdZdZy)1TestEnumV3.test_autovalue_and_init.<locals>.Fieldrq  rr  Nrs  rA   rB   rC   rv  r  l  rw  rB   rv  value __doc__r   r   rr  )r   r   rt  ru  r   r{  s     rC   test_autovalue_and_initz"TestEnumV3.test_autovalue_and_initk  sA    	-G/ 	- 	Q',,.FGrB   c                 :    G d dt         dt        d      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  j
                  d       | j                  |j                  j
                  d       y )	Nc                       e Zd ZdZdZy)3TestEnumV3.test_autonumber_and_start.<locals>.Fieldrq  rr  Nrs  rA   rB   rC   rv  r  s  rw  rB   rv  r   r)   )r   r   r   r   rq  rr  )r   r   r   rt  ru  r   r{  s     rC   test_autonumber_and_startz$TestEnumV3.test_autonumber_and_startr  st    	-G)ha 	- 	Q'a(++-HI,,.FGrB   c                 6    G d dt         d      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  j                  d	       | j                  |j                  j                  d
       | j                  |j                  j                  d       | j                  |j
                  j                  d       y )Nc                       e Zd ZdZdZdZdZy)BTestEnumV3.test_autonumber_and_init_and_some_values.<locals>.Fieldrq  rr  )rM   	test blah
test belchN)r:   r;   r<   rt  ru  BLAHBELCHrA   rB   rC   rv  r  |  s    .D,E!D ErB   rv  r  r   r   r7   rM      rq  rr  r  r  )r   r   rt  ru  r  r  r   r{  s     rC   (test_autonumber_and_init_and_some_valuesz3TestEnumV3.test_autonumber_and_init_and_some_values{  s    	!G/ 	!
 	Q'a(Q'a(++-HI,,.FG++[9,,l;rB   c                 l    G d dt         d      }| j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  j
                  d       | j                  |j                  j                  d       | j                  |j                  j                  d	       | j                  |j                  j
                  d
       | j                  t        d      5   G d dt         d      }d d d         G d dt         d      }| j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  j                  d       y # 1 sw Y   xY w)Nc                       e Zd ZdZdZy)?TestEnumV3.test_autonumber_with_irregular_values.<locals>.Point   	   )      Nr:   r;   r<   r&  r'  rA   rB   rC   Pointr    s    EFrB   r  zx yr   r   r  r  r7   r  r  zI.*number of fields provided do not match init ...x., .y.. != .3, 11, 13..c                       e Zd ZdZdZy)r  r  )r8   r  r  Nr  rA   rB   rC   r  z?TestEnumV3.test_autonumber_with_irregular_values.<locals>.Point  s    "rB   c                       e Zd ZdZdZdZy)?TestEnumV3.test_autonumber_with_irregular_values.<locals>.ColorrA   r   Nr   rA   rB   rC   r   r    s    CEDrB   r   r   r   )r   r   r&  r   xyr'  r   r   rz   r   r   r   r   )rj   r  r   s      rC   %test_autonumber_with_irregular_valuesz0TestEnumV3.test_autonumber_with_irregular_values  s4   	N 	 	**A.**++Q/,,##I/z{ 	##U #	#	N 	
 			))1-,,e4

**A.	# 	#s   F**F3c                 v    | j                  t              5   G d dt              }d d d        y # 1 sw Y   y xY w)Nc                   2    e Zd ZdZdZdZdZedefd       Z	y)6TestEnumV3.test_autonumber_and_property.<locals>.ColorrA   returnc                 6    | j                   j                         S r   r   titler   s    rC   cap_namez?TestEnumV3.test_autonumber_and_property.<locals>.Color.cap_name      99??,,rB   N
r:   r;   r<   r   r   r   r   r   rh   r  rA   rB   rC   r   r    s/    -c - -rB   r   r   r   r
   r   s     rC   test_autonumber_and_propertyz'TestEnumV3.test_autonumber_and_property  1    y) 	-- -	- 	- 	-   /8c                 ^    G d dt               }| j                  t        |      |j                  |j                  |j
                  g       | j                  |D cg c]  }|j                   c}g d       | j                  |D cg c]  }|j                   c}g d       y c c}w c c}w )Nc                       e Zd Ze e e y)'TestEnumV3.test_autoenum.<locals>.ColorNr   rA   rB   rC   r   r    s    rB   r   )r   r7   r8   r   r   r   r
   r   r   r   r   r   r   r   rj   r   ms      rC   test_autoenumzTestEnumV3.test_autoenum  s~    	H 	 	euyy%++uzz&JK51a!''19=%0Q!&&02JK 20   B%B*c                 ^    G d dt               }| j                  t        |      |j                  |j                  |j
                  g       | j                  |D cg c]  }|j                   c}g d       | j                  |D cg c]  }|j                   c}g d       y c c}w c c}w )Nc                       e Zd Zd Ze e e y)0TestEnumV3.test_autoenum_with_str.<locals>.Colorc                     | S r   rA   )r   r   countlast_valuess       rC   _generate_next_value_zFTestEnumV3.test_autoenum_with_str.<locals>.Color._generate_next_value_      rB   N)r:   r;   r<   r  r   r   r   rA   rB   rC   r   r    s    rB   r   r  r  r  s      rC   test_autoenum_with_strz!TestEnumV3.test_autoenum_with_str  s    	H 	 	euyy%++uzz&JK51a!''13KL%0Q!&&02JK 20r  c                 n     G d dt               }| j                  |j                  j                  d       y )Nc                   (    e Zd Ze e e ed        Zy):TestEnumV3.test_autoenum_and_default_ignore.<locals>.Colorc                 6    | j                   j                         S r   r  r   s    rC   r  zCTestEnumV3.test_autoenum_and_default_ignore.<locals>.Color.cap_name      yy((rB   N)r:   r;   r<   r   r   r   r   r  rA   rB   rC   r   r    s    ) )rB   r   Bluer
   r   r   r  r   s     rC    test_autoenum_and_default_ignorez+TestEnumV3.test_autoenum_and_default_ignore  s*    	)H 	) 	,,f5rB   c                 v    | j                  t              5   G d dt              }d d d        y # 1 sw Y   y xY w)Nc                   2    e Zd ZdZe e e edefd       Z	y)?TestEnumV3.test_autonumber_and_overridden_ignore.<locals>.Colorstaticmethodr  c                 6    | j                   j                         S r   r  r   s    rC   r  zHTestEnumV3.test_autonumber_and_overridden_ignore.<locals>.Color.cap_name  r  rB   Nr  rA   rB   rC   r   r    s)    )-c - -rB   r   r  r   s     rC   %test_autonumber_and_overridden_ignorez0TestEnumV3.test_autonumber_and_overridden_ignore  r  r  c                 n     G d dt               }| j                  |j                  j                  d       y )Nc                   2    e Zd ZdZe e eZede	fd       Z
y)ATestEnumV3.test_autonumber_and_multiple_assignment.<locals>.Colorr   r  c                 6    | j                   j                         S r   r  r   s    rC   r  zJTestEnumV3.test_autonumber_and_multiple_assignment.<locals>.Color.cap_name  r  rB   N)r:   r;   r<   r   r   r   cyanr   r   rh   r  rA   rB   rC   r   r    s+    !HD)# ) )rB   r   Cyanr  r   s     rC   'test_autonumber_and_multiple_assignmentz2TestEnumV3.test_autonumber_and_multiple_assignment  s*    	)H 	) 	,,f5rB   c                      G d dt         t        t        t        fd      }|}| j	                  |j
                  d       | j                  |j
                   |d      cxu xr  |d      u        y c        y )Nc                       e Zd ZdZdZdZy)HTestEnumV3.test_multivalue_and_autonumber_inherited.<locals>.Measurement201107212012091120110518Nr:   r;   r<   rp   twothreerA   rB   rC   Measurementr        CCErB   r  r)   r   r  )intr   r   r   r   rp   rz   )rj   r  Ms      rC   (test_multivalue_and_autonumber_inheritedz3TestEnumV3.test_multivalue_and_autonumber_inherited  s\    	#tz8.DA 	 "16:6767rB   c                      G d dt         t              }| j                  t              5   G d d|t              }d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zy)DTestEnumV3.test_combine_new_settings_with_old_settings.<locals>.AutoNr   rA   rB   rC   Autor        rB   r  r   c                       e Zd Ze e dZy)JTestEnumV3.test_combine_new_settings_with_old_settings.<locals>.AutoUniquer   N)r:   r;   r<   r  BLUHICKrA   rB   rC   
AutoUniquer    s    rB   r  )r   r   r   rK  r   )rj   r  r  s      rC   +test_combine_new_settings_with_old_settingsz6TestEnumV3.test_combine_new_settings_with_old_settings  sA    	4& 	z* 	TJ 	 	 	s   AAc                      G d dt         t              }| j                  t        |d             | j                  t        |d             | j                  t        |d             | j	                  t        |j                  t                      y )Nc                       e Zd ZdZdZeZdZ e       Z	 e
d      D ]  Zedfe	dez  <     e
d      D ]  Zedz  d	fe	d
ez  <     e
d      D ]  Zedz  dfe	dez  <    eZeZy))TestEnumV3.test_timedelta.<locals>.Periodz3
            different lengths of time
            zvalue periodzPeriod i   dayzday_%drc   r  weekzweek_%d      monthzmonth_%dN)r:   r;   r<   r   _init_r   r   r   varsPeriodrangeiday_1OneDayweek_1OneWeekrA   rB   rC   r  r    s     $F J!HVF2Y 0'(%xx!|$02Y 4()!Vy1}%42Y 7)*2wzA~&7FGrB   r  r   r  )r+   r   r}   rz  rz   r|   r  )rj   r  s     rC   test_timedeltazTestEnumV3.test_timedelta  sh    	Y 	  	4523-.
6<<;<rB   c                 D    G d dt               }t        |dd       | j                  |j                  j                  d       | j                  |j                  j
                  d       | j                  |j                  |v        | j                  t        |      d       y )Nc                       e Zd ZdZdZdZy)0TestEnumV3.test_extend_enum_plain.<locals>.Colorr   r7   r8   Nr   rA   rB   rC   r   r  	      CEDrB   r   brownr9   )r	   r   r   r  r   r   rz   rR  r   s     rC   test_extend_enum_plainz!TestEnumV3.test_extend_enum_plain  sy    	J 	 	E7A&))73**A.u,-UQ'rB   c                     G d dt               }t        |dd       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  |v        | j                  t        |      d       | j                  |j                  j                  d       y )Nc                       e Zd ZdZdZdZy)1TestEnumV3.test_extend_enum_shadow.<locals>.Colorr   r7   r8   Nr   rA   rB   rC   r   r    r  rB   r   r   r9   r   )r	   r   r   r   r   rz   rR  r   r   s     rC   test_extend_enum_shadowz"TestEnumV3.test_extend_enum_shadow  s    	J 	 	E7A&))73**A.u,-UQ'!,rB   c                     G d dt               }t        |d       | j                  |j                  j                  d       | j                  |j
                  j                  d       | j                  |j                  j                  d       y )Nc                       e Zd Zd Ze e y)1TestEnumV3.test_extend_enum_generate.<locals>.Fooc                     | S r   rA   )r   r   r  r  r   kwdss         rC   r  zGTestEnumV3.test_extend_enum_generate.<locals>.Foo._generate_next_value_!  r  rB   N)r:   r;   r<   r  abrA   rB   rC   Foor     s    rB   r  cr  r  )r
   r   r   r  r   r  r  )rj   r  s     rC   test_extend_enum_generatez$TestEnumV3.test_extend_enum_generate  sb    	( 	 	Cc*c*c*rB   c                     | j                  t              5   G d dt        t              }t	        |dd       d d d        y # 1 sw Y   y xY w)Nc                       e Zd ZdZdZdZy)@TestEnumV3.test_extend_enum_unique_with_duplicate.<locals>.Colorr   r7   r8   Nr   rA   rB   rC   r   r  -      rB   r   r   r   r   )r   rK  r   r   r   r   s     rC   &test_extend_enum_unique_with_duplicatez1TestEnumV3.test_extend_enum_unique_with_duplicate+  sA    z* 	+v  w*	+ 	+ 	+   #AAc                     | j                  t              5   G d dt        t              }t	        |dd       d d d        y # 1 sw Y   y xY w)Nc                       e Zd ZdZdZdZy)DTestEnumV3.test_extend_enum_multivalue_with_duplicate.<locals>.Color)r   rJ  )r7   verde)r8   azulNr   rA   rB   rC   r   r  5  s    " rB   r   r   r   r7   )r   rK  r   r   r   r   s     rC   *test_extend_enum_multivalue_with_duplicatez5TestEnumV3.test_extend_enum_multivalue_with_duplicate3  sA    z* 	+!z ! w*	+ 	+ 	+r  c                     G d dt         t              }t        |dd       | j                  t        |d       | j                  |j                  |j                  u        | j                  |j                  j                  d       y )Nc                       e Zd ZdZdZdZy)ATestEnumV3.test_extend_enum_noalias_with_duplicate.<locals>.Colorr   r7   r8   Nr   rA   rB   rC   r   r"  <  r  rB   r   r   r   r8   )	r   r   r   r   r   r}   r   r   rz   r   s     rC   'test_extend_enum_noalias_with_duplicatez2TestEnumV3.test_extend_enum_noalias_with_duplicate;  sc    	D7 	 	E7A()UA.

23))1-rB   c                 6    d }| j                  t        |       y )Nc                  @     G d dt               }  G d dt               } y )Nc                       e Zd ZdZdZdZyDTestEnumV3.test_no_duplicates.<locals>.bad_duplicates.<locals>.Colorr   r7   r8   Nr   rA   rB   rC   r   r(  G  r  rB   r   c                       e Zd ZdZdZdZdZyr'  )r:   r;   r<   r   r   r   grenerA   rB   rC   r   zDTestEnumV3.test_no_duplicates.<locals>.bad_duplicates.<locals>.ColorK  s    rB   )r	   r   s    rC   bad_duplicatesz5TestEnumV3.test_no_duplicates.<locals>.bad_duplicatesF  s    
 
 rB   )r   rK  )rj   r,  s     rC   test_no_duplicateszTestEnumV3.test_no_duplicatesE  s    		 	*n5rB   c                 J     G d dt               } G d dt        t               }y )Nc                       e Zd ZdZdZdZy)2TestEnumV3.test_no_duplicates_kinda.<locals>.Sillyr   dosr8   N)r:   r;   r<   rp   r  r   rA   rB   rC   Sillyr0  S  s    CCDrB   r2  c                       e Zd ZdZdZdZdZy)4TestEnumV3.test_no_duplicates_kinda.<locals>.Sillierr   r7   r8   r9   N)r:   r;   r<   singler   tripler   rA   rB   rC   Sillierr4  W  s    FDFErB   r7  )r	   r   )rj   r2  r7  s      rC   test_no_duplicates_kindaz#TestEnumV3.test_no_duplicates_kindaR  s    	J 		gz 	rB   c                     G d dt         t              }| j                  t        |      |j                  |j
                  |j                  g       | j                  |j                  j                  d       | j                  |j
                  j                  d       | j                  |j                  j                  d       y )Nc                       e Zd Ze e e y)*TestEnumV3.test_auto_number.<locals>.ColorNr:   r;   r<   r   r   r   rA   rB   rC   r   r;  ^      rB   r   r   r   r7   r8   r   r   r   r   r   r   r   r   r   s     rC   test_auto_numberzTestEnumV3.test_auto_number]  s    	D: 	
 	euyy%**ekk&JK!,))1-**A.rB   c                     G d dt         t              }| j                  t        |      |j                  |j
                  |j                  g       | j                  |j                  j                  d       | j                  |j
                  j                  d       | j                  |j                  j                  d       y )Nc                       e Zd Zd Ze e e y)(TestEnumV3.test_auto_name.<locals>.Colorc                     | S r   rA   r   r   r  lasts       rC   r  z>TestEnumV3.test_auto_name.<locals>.Color._generate_next_value_j  r  rB   N)r:   r;   r<   r  r   r   r   rA   rB   rC   r   rB  i  s    rB   r   r   r   r   r   r>  r   s     rC   test_auto_namezTestEnumV3.test_auto_nameh  s    	D: 	 	euyy%**ekk&JK%0))62**G4rB   c                     G d dt               } G d d|t              }| j                  t        |      |j                  |j
                  |j                  g       | j                  |j                  j                  d       | j                  |j
                  j                  d       | j                  |j                  j                  d       y )	Nc                       e Zd Zd Zy)7TestEnumV3.test_auto_name_inherit.<locals>.AutoNameEnumc                     | S r   rA   rD  s       rC   r  zMTestEnumV3.test_auto_name_inherit.<locals>.AutoNameEnum._generate_next_value_w  r  rB   N)r:   r;   r<   r  rA   rB   rC   AutoNameEnumrI  v  s    rB   rK  c                       e Zd Ze e e y)0TestEnumV3.test_auto_name_inherit.<locals>.ColorNr<  rA   rB   rC   r   rM  y  r=  rB   r   r   r   r   r   r>  )rj   rK  r   s      rC   test_auto_name_inheritz!TestEnumV3.test_auto_name_inheritu  s    	4 		L: 	
 	euyy%**ekk&JK%0))62**G4rB   c                 n     G d dt               }| j                  |j                  j                  d       y )Nc                       e Zd ZeZdZe y)+TestEnumV3.test_auto_garbage.<locals>.Colorr   N)r:   r;   r<   r   r   r   r   rA   rB   rC   r   rQ    s    #JCrB   r   r   )r   r   r   r   r   s     rC   test_auto_garbagezTestEnumV3.test_auto_garbage  s*    	D 	 	))1-rB   c                     G d dt         t              }| j                  t        |      |j                  |j
                  |j                  g       | j                  |j                  j                  d       | j                  |j
                  j                  d       | j                  |j                  j                  d       y )Nc                       e Zd ZdZdZe y)5TestEnumV3.test_auto_garbage_corrected.<locals>.Colorr   r7   Nr<  rA   rB   rC   r   rU    s    CDrB   r   r   r   r7   r8   r>  r   s     rC   test_auto_garbage_correctedz&TestEnumV3.test_auto_garbage_corrected  s    	D: 	
 	euyy%**ekk&JK%0))1-**A.rB   c                      G d dt         t              }| j                  |j                  |j                  |j
                  gt        |             y )Nc                       e Zd ZeZe e y)-TestEnumV3.test_duplicate_auto.<locals>.DupesN)r:   r;   r<   primeror&  r'  r(  rA   rB   rC   DupesrY    s    ErB   r[  r   )r   r   r   r&  r'  r(  r   )rj   r[  s     rC   test_duplicate_autozTestEnumV3.test_duplicate_auto  s9    	D: 	 	%++u||U[[A4;OrB   c                 B    G d dt               }t        |      D ]!  \  }}| j                  ||j                         # |}| j                  |j                  j
                  d       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  j
                  d       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  j
                  d	       | j                  |j                  j                  d
       | j                  |j                  j                  d       | j                  |j                  j
                  d       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  j
                  d       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  j
                  d       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  j
                  d       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  j
                  d       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  j
                  d       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  j
                  d       | j                  |j                  j                  d       | j                  |j                  j                  d        | j                  |j                   j
                  d!       | j                  |j                   j                  d"       | j                  |j                   j                  d#        G d$ dt               }t        |      D ]$  \  }}| j                  ||j                  d          & |}| j                  |j                  j
                  d       | j                  |j                  j                  d%       | j                  |j                  j
                  d       | j                  |j                  j                  d&       | j                  |j                  j
                  d	       | j                  |j                  j                  d'       | j                  |j                  j
                  d       | j                  |j                  j                  d(       | j                  |j                  j
                  d       | j                  |j                  j                  d)       | j                  |j                  j
                  d       | j                  |j                  j                  d*       | j                  |j                  j
                  d       | j                  |j                  j                  d+       | j                  |j                  j
                  d       | j                  |j                  j                  d,       | j                  |j                  j
                  d       | j                  |j                  j                  d-       | j                  |j                  j
                  d       | j                  |j                  j                  d.       | j                  |j                   j
                  d!       | j                  |j                   j                  d/       | j#                  t$              5   G d0 dt               }d d d        | j#                  t$              5   G d1 dt               }d d d        y # 1 sw Y   7xY w# 1 sw Y   y xY w)2Nc                   B    e Zd ZdZd ZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZy)7TestEnumV3.test_order_as_function.<locals>.TestSequencezvalue, sequencec                     | j                   S r   sequencemembers    rC   <lambda>z@TestEnumV3.test_order_as_function.<locals>.TestSequence.<lambda>  s
    V__ rB   An$(1,6)r)   An$(7,2)r   An$(9,4)r7   	Hn$(13,6)r8   	Cn$(19,3)r9   Zn$(1,1)rM   Bn(2,1)r  Fnr  Rn$(5,1)   Sn$(6,1)r  Qn$(7,2)
   Nr:   r;   r<   r  ry  item_id
company_idwarehouse_nocompanykey_type	availablecontract_itemsales_categorygl_categorywarehouse_category	inv_unitsrA   rB   rC   TestSequencer_    sD    &F4G'9G'9J'9L'9G'9H'9I'9M'9N'9K'9'9IrB   r  r  rg  r)   r  ri  r   r  rk  r7   r  rm  r8   r  ro  r9   r  rq  rM   r  rs  r  r  ru  r  r  rw  rx  r  rz  r  r  r|  r}  c                   >    e Zd Zd ZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZy)r_  c                      | j                   d   S )Nr   r   rc  s    rC   re  z@TestEnumV3.test_order_as_function.<locals>.TestSequence.<lambda>  s    V\\!_ rB   rf  rh  rj  rl  rn  rp  rr  rt  rv  ry  r{  N)r:   r;   r<   ry  r  r  r  r  r  r  r  r  r  r  r  rA   rB   rC   r  z7TestEnumV3.test_order_as_function.<locals>.TestSequence  s?    4G'9G'9J'9L'9G'9H'9I'9M'9N'9K'9'9IrB   rf  rh  rj  rl  rn  rp  rr  rt  rv  ry  r{  c                   B    e Zd ZdZd ZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZy)r_  rb  c                     | j                   S r   ra  rc  s    rC   re  z@TestEnumV3.test_order_as_function.<locals>.TestSequence.<lambda>  
     rB   rf  rh  rj  rl  rn  rp  rr  rt  rv  ry  r{  Nr~  rA   rB   rC   r  z7TestEnumV3.test_order_as_function.<locals>.TestSequence  sD    #8+=+=
+=+=+=+=	+=+=+=+="+=	rB   c                   B    e Zd ZdZd ZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZy)r_  rb  c                     | j                   S r   ra  rc  s    rC   re  z@TestEnumV3.test_order_as_function.<locals>.TestSequence.<lambda>  r  rB   rf  rj  rl  rh  r{  rp  rr  rt  rn  rv  ry  N)r:   r;   r<   r  ry  r  r  r  r  r  r  r  r  r  r  r  rA   rB   rC   r  z7TestEnumV3.test_order_as_function.<locals>.TestSequence	  sD    #8+=+=+=+=
+=	+=	+=+=+=+=+="rB   )r   	enumerater   rb  r  r   r   r  r  r  r  r  r  r  r  r  r  r   r   )rj   r  r  rd  tss        rC   test_order_as_functionz!TestEnumV3.test_order_as_function  s   	:4 	: #<0 	1IAvQ0	1)4)):6,,a0++\:,,j9//3--~>..
;1115)4));7,,a0)):6**K8--q1**K8++Z8..2))..@))//;))22A6**//1AB**00$7**33Q7,,m<--z:00!4..335IJ..44jA..77;**K8++Z8..3	:4 	: #<0 	1IAvQQ0	1)4))?;++\:,,o>--~>..@)4))+;<)):6**,<=**K8++_=))..@))//@**//1AB**00)<,,m<--?..335IJ..44oF**K8++-=>y) 	>>t >	>  y) 	>>t >	> 	>!	> 	> 	> 	>s   d	0d	ddc                      G d dt               }| j                   |d      |j                         | j                  t        d|d       | j                  t
        d|d       | j                  t        |d       y )	Nc                   (    e Zd ZdZdZdZed        Zy)&TestEnumV3.test_missing.<locals>.Colorr   r7   r8   c                 H    |dk(  r| j                   S |dk(  ry|dk(  rt        y )Nr  
bad returnrM   	error out)r   ZeroDivisionError)r   items     rC   	_missing_z0TestEnumV3.test_missing.<locals>.Color._missing_  s0    w"xx- ,//  $rB   N)r:   r;   r<   r   r   r   classmethodr  rA   rB   rC   r   r    s#    
$ 
$rB   r   r  z7 is not a valid Colorr  zerror in .*_missing_r  r  )r   r^  r   r   rK  r   r   r  r   s     rC   test_missingzTestEnumV3.test_missing  sd    $ $  MM%.%**5"":/GPQR""9.De\Z/DrB   c                     G d dt               }| j                  |j                  j                  t               | j                  |j
                  j                  t               | j                  |j                  j                  t                G d d       G d d       G fddt               }| j                  |j                  j                         | j                  |j                  j                          G d	 d
       G fddt               }| j                  |j                  j                         y)z2Support using Enum to refer to types deliberately.c                       e Zd ZeZeZeZy).TestEnumV3.test_enum_of_types.<locals>.MyTypesN)	r:   r;   r<   r  r  rg   frh   srA   rB   rC   MyTypesr  1  s    AAArB   r  c                       e Zd Zy)*TestEnumV3.test_enum_of_types.<locals>.FooNr   rA   rB   rC   r  r  8  r  rB   r  c                       e Zd Zy)*TestEnumV3.test_enum_of_types.<locals>.BarNr   rA   rB   rC   Barr  :  r  rB   r  c                       e Zd ZW ZW  Zy)/TestEnumV3.test_enum_of_types.<locals>.MyTypes2N)r:   r;   r<   r  r  )r  r  s   rC   MyTypes2r  <  s    AArB   r  c                       e Zd Zy)7TestEnumV3.test_enum_of_types.<locals>.SpamEnumNotInnerNr   rA   rB   rC   SpamEnumNotInnerr  A  r  rB   r  c                       e Zd ZW  Zy)/TestEnumV3.test_enum_of_types.<locals>.SpamEnumN)r:   r;   r<   spam)r  s   rC   SpamEnumr  C  s    #DrB   r  N)r   r   r  r   r  r  rg   r  rh   r  r  r  )rj   r  r  r  r  r  r  s       @@@rC   test_enum_of_typeszTestEnumV3.test_enum_of_types/  s    	d 	 	#.%0#.	 		 		t 	 	))3/))3/	 		$t 	$,,.>?rB   c                      G d dt               }| j                  t        |j                  t                     | j                  |j                  j                  d       | j                  |j                  j                  j                  d       | j                  t        |j                        |j                  j                  |j                  j                  g       | j                  t        |      |j                  |j                  g       y)z'Support locally-defined nested classes.c                   .    e Zd ZdZdZdZ G d de      Zy)KTestEnumV3.test_nested_classes_in_enum_do_not_create_members.<locals>.OuterOuterr   r7   c                       e Zd ZdZdZdZy)QTestEnumV3.test_nested_classes_in_enum_do_not_create_members.<locals>.Outer.InnerzOuter.Innerr}  r  N)r:   r;   r<   foor   rA   rB   rC   Innerr  N  s    ,rB   r  N)r:   r;   r<   r  r  r   r  rA   rB   rC   r  r  J  s    "LAA rB   r  r   r}  N)r   rz   r|   r  r+  r   r  r   r  r   r   r  )rj   r  s     rC   1test_nested_classes_in_enum_do_not_create_membersz<TestEnumV3.test_nested_classes_in_enum_do_not_create_membersG  s    	D 	 	
5;;56*..3[[__ekkoo.	 	KWWegg	rB   c                 Z    G d dt               }|| j                  _        d| j                  j                  z  | j                  _        t        | j                  t        | j                  j                  d       t        | j                  | j                  j                  dt        f       y )Nc                       e Zd ZdZdZyNTestEnumV3.test_class_nested_enum_and_pickle_protocol_four.<locals>.NestedEnumcommonrareNr:   r;   r<   twigsshinyrA   rB   rC   
NestedEnumr  a       rB   r  %s.NestedEnum)r)   r8   protocolr9   )r   r   r  r:   r<   test_pickle_exceptionr   r.   r  r   rz   r/   rj   r  s     rC   /test_class_nested_enum_and_pickle_protocol_fourz:TestEnumV3.test_class_nested_enum_and_pickle_protocol_four_  s~    T  )3DNN%+:T^^=T=T+TDOO(!%%}doo6K6K#% "$//4??3H3H!124rB   c                      G d dt               }|| j                  _        d| j                  j                  z  | j                  _        t        | j                  | j                  j                  dt        f       y )Nc                       e Zd ZdZdZyr  r  rA   rB   rC   r  zNTestEnumV3.test_class_nested_enum_and_pickle_protocol_four.<locals>.NestedEnump  r  rB   r  r  r)   r  )	r   r   r  r:   r<   r   rz   r  r/   r  s     rC   r  z:TestEnumV3.test_class_nested_enum_and_pickle_protocol_fourn  sZ    T  )3DNN%+:T^^=T=T+TDOO(!$//4??3H3H!124rB   c                 "    G fddt               | j                  j                  j                  gt	                     | j                  j                  j
                  d       | j                  j                  j                  d       y )Nc                   @    e Zd ZdZ W  dd      Z W  dd      Zd Zy)-TestEnumV3.test_enum_injection.<locals>.ColorzBLACK WHITEblackz#000white#fffc                      || _         || _        y r   )labelhex)rj   r  r  s      rC   r   z6TestEnumV3.test_enum_injection.<locals>.Color.__init__  s    !&DJ"DHrB   N)r:   r;   r<   ry  BLACKWHITEr   r+  s   rC   r   r  {  s%    'gv.gv.#rB   r   r  r  )r   r   r  r  r   r  r  r   s    @rC   test_enum_injectionzTestEnumV3.test_enum_injectionz  sd    # # ekk5;;7eEU[[__f5U[[..8rB   c                 D    G fddt                G d dt              }| j                  |j                  t        j                         | j	                  t        |j                  |j                  z         d       t               d<   |t               d<    dd      }| j	                  |d       t        | j                  |ddt        f	       | j	                  |j                  j                  d
       t        | j                  |j                  dt        f	       y )Nc                   D    e Zd ZdZd Zd Zed        Z d Zd Z fdZy)	?TestEnumV3.test_subclasses_with_getnewargs_ex.<locals>.NamedIntNamedIntc                     |}t        |      dk  rt        d      |d   |dd  }}t        j                  | g| }||_        ||_        |S )Nr7   z name and value must be specifiedr)   r   )rR  r   r  __new___intname_args)r   r   r  r   rj   s        rC   r  zGTestEnumV3.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__new__  sW     E4y1}'(JKK!%a$qr($D;;s2T2D$(DM!&DJKrB   c                     | j                   i fS r   )r  r   s    rC   __getnewargs_ex__zQTestEnumV3.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__getnewargs_ex__  s    ::r>)rB   c                     | j                   S r   )r  r   s    rC   r:   zHTestEnumV3.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__name__  s    ==(rB   c                     dj                  t        |       j                  | j                  t        j	                  |             S )Nz{}({!r}, {}))formatr+  r:   r  __repr__r   s    rC   r  zHTestEnumV3.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__repr__  s6    )00d1D1D1514d1CE ErB   c                 |    t         }|j                  }|j                  t        u r|j	                  |       S  ||       S r   )r  __str____objclass__objectr  )rj   basebase_strs      rC   r  zGTestEnumV3.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__str__  s7    D#||H,,6#}}T22#D>)rB   c                     t        |       t        |      z   }t        |       r9t        |      r- dj                  | j                  |j                        |      S |S )Nz({0} + {1}))r  r|   r  r:   )rj   othertempr  s      rC   __add__zGTestEnumV3.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__add__  sW    t9sE{2D!$1j6Q')00O  # #  $rB   N)	r:   r;   r<   r  r  r   r  r  r  )r  s   rC   r  r    s4    ) *) )E
*$rB   r  c                       e Zd ZdZdZdZy):TestEnumV3.test_subclasses_with_getnewargs_ex.<locals>.NEINEI)zthe-xr   )zthe-yr7   N)r:   r;   r<   r  r  rA   rB   rC   r  r    s    $  rB   r  zNamedInt('(the-x + the-y)', 3)testrM   r9   r  r7   )r  r   r^  r  r   reprr  r  r   r   r/   r   rz   )rj   r  NI5r  s      @rC   "test_subclasses_with_getnewargs_exz-TestEnumV3.test_subclasses_with_getnewargs_ex  s    %$3 %$N!h ! MM#++t||4T#%%#%%-02RS$,GIj!"GIe61%CS!$!$"2"2CaIYEZ[SUU[[!,!$//355AGWCXYrB   c                      G d dt               } G d d|t              }| j                  t        |j                        d       y )Nc                       e Zd Zy)CTestEnumV3.test_multiple_superclasses_repr.<locals>._EnumSuperClassNr   rA   rB   rC   _EnumSuperClassr     r  rB   r  r   c                       e Zd ZdZy)5TestEnumV3.test_multiple_superclasses_repr.<locals>.Er   N)r:   r;   r<   rN   rA   rB   rC   rG   r    s    ArB   rG   z<E.A: 1>)r   r   r   r  rN   )rj   r  rG   s      rC   test_multiple_superclasses_reprz*TestEnumV3.test_multiple_superclasses_repr  s4    	 		 	accJ/rB   N)Fr:   r;   r<   rk   unittest
skipUnlessr   r~   r   r    r#   r   r   r   r   r   r   r   r  r  r  r"  r,  r7  rE  rL  rS  rW  r_  re  ri  rm  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r#  r-  r8  r?  rF  rN  rR  rV  r\  r  r!   r  r  r  r"   r  r  r  r  rA   rB   rC   r3   r3      s   !F X)DE F F FD X)DE F( X%)VW7 X7E$
5$-;-$
H2"2
X/9((4HH</.	-L	L6	-	68=,	(
-
+++.6		/55.	/Pz>x ~	E,@0. ~	4 
%		4 ~	96	Zp0rB   r3   c                   d    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zy)TestOrderV3z5
    Test definition order versus _order_ order.
    c                 "     G d dt               }y )Nc                       e Zd ZdZdZdZdZy),TestOrderV3.test_same_members.<locals>.Colorred green bluer   r7   r8   Nr:   r;   r<   ry  r   r   r   rA   rB   rC   r   r        &GCEDrB   r   r   r   s     rC   test_same_memberszTestOrderV3.test_same_members      	D 	rB   c                 "     G d dt               }y )Nc                        e Zd ZdZdZdZdZeZy)9TestOrderV3.test_same_members_with_aliases.<locals>.Colorr  r   r7   r8   Nr:   r;   r<   ry  r   r   r   r  rA   rB   rC   r   r        &GCEDErB   r   r  r   s     rC   test_same_members_with_aliasesz*TestOrderV3.test_same_members_with_aliases      	D 	rB   c                 x    | j                  t        d      5   G d dt              }d d d        y # 1 sw Y   y xY w)N#member order does not match _order_c                       e Zd ZdZdZdZdZy)8TestOrderV3.test_same_members_wrong_order.<locals>.Colorr  r   r8   r7   Nr:   r;   r<   ry  r   r   r   rA   rB   rC   r   r        *rB   r   r   r   r   r   s     rC   test_same_members_wrong_orderz)TestOrderV3.test_same_members_wrong_order  4    ##I/TU 	 	 	 	r   c                 x    | j                  t        d      5   G d dt              }d d d        y # 1 sw Y   y xY w)Nr  c                       e Zd ZdZdZdZdZy)7TestOrderV3.test_order_has_extra_members.<locals>.Colorred green blue purpler   r7   r8   Nr  rA   rB   rC   r   r$        1rB   r   r  r   s     rC   test_order_has_extra_membersz(TestOrderV3.test_order_has_extra_members  4    ##I/TU 	 	 	 	r   c                 x    | j                  t        d      5   G d dt              }d d d        y # 1 sw Y   y xY w)Nr  c                        e Zd ZdZdZdZdZeZy)DTestOrderV3.test_order_has_extra_members_with_aliases.<locals>.Colorr%  r   r7   r8   Nr  rA   rB   rC   r   r+        1rB   r   r  r   s     rC   )test_order_has_extra_members_with_aliasesz5TestOrderV3.test_order_has_extra_members_with_aliases  4    ##I/TU 	 	 	 	r   c                 x    | j                  t        d      5   G d dt              }d d d        y # 1 sw Y   y xY w)Nr  c                        e Zd ZdZdZdZdZdZy)6TestOrderV3.test_enum_has_extra_members.<locals>.Colorr  r   r7   r8   r9   Nr:   r;   r<   ry  r   r   r   purplerA   rB   rC   r   r1        *rB   r   r  r   s     rC   test_enum_has_extra_membersz'TestOrderV3.test_enum_has_extra_members  4    ##I/TU 	 	 	 	r   c                 x    | j                  t        d      5   G d dt              }d d d        y # 1 sw Y   y xY w)Nr  c                   $    e Zd ZdZdZdZdZdZeZy)CTestOrderV3.test_enum_has_extra_members_with_aliases.<locals>.Colorr  r   r7   r8   r9   N	r:   r;   r<   ry  r   r   r   r3  r  rA   rB   rC   r   r9          *rB   r   r  r   s     rC   (test_enum_has_extra_members_with_aliasesz4TestOrderV3.test_enum_has_extra_members_with_aliases  4    ##I/TU 	 	 	 	r   c                 "     G d dt               }y )Nc                       e Zd ZdZdZdZdZy)1TestOrderV3.test_same_members_flag.<locals>.Colorr  r   r7   r9   Nr  rA   rB   rC   r   r@  	  r  rB   r   r   r   s     rC   test_same_members_flagz"TestOrderV3.test_same_members_flag  r  rB   c                 "     G d dt               }y )Nc                        e Zd ZdZdZdZdZeZy)>TestOrderV3.test_same_members_with_aliases_flag.<locals>.Colorr  r   r7   r9   Nr  rA   rB   rC   r   rE    r  rB   r   rA  r   s     rC   #test_same_members_with_aliases_flagz/TestOrderV3.test_same_members_with_aliases_flag  r  rB   c                 x    | j                  t        d      5   G d dt              }d d d        y # 1 sw Y   y xY w)Nr  c                       e Zd ZdZdZdZdZy)=TestOrderV3.test_same_members_wrong_order_falg.<locals>.Colorr  r   r9   r7   Nr  rA   rB   rC   r   rI    r  rB   r   r   r   s     rC   "test_same_members_wrong_order_falgz.TestOrderV3.test_same_members_wrong_order_falg  r!  r   c                 x    | j                  t        d      5   G d dt              }d d d        y # 1 sw Y   y xY w)Nr  c                       e Zd ZdZdZdZdZy)<TestOrderV3.test_order_has_extra_members_flag.<locals>.Colorr%  r   r7   r9   Nr  rA   rB   rC   r   rM  !  r&  rB   r   r   r   s     rC   !test_order_has_extra_members_flagz-TestOrderV3.test_order_has_extra_members_flag  r(  r   c                 x    | j                  t        d      5   G d dt              }d d d        y # 1 sw Y   y xY w)Nr  c                        e Zd ZdZdZdZdZeZy)ITestOrderV3.test_order_has_extra_members_with_aliases_flag.<locals>.Colorr%  r   r7   r9   Nr  rA   rB   rC   r   rQ  )  r,  rB   r   r   r   s     rC   .test_order_has_extra_members_with_aliases_flagz:TestOrderV3.test_order_has_extra_members_with_aliases_flag'  r.  r   c                 x    | j                  t        d      5   G d dt              }d d d        y # 1 sw Y   y xY w)Nr  c                        e Zd ZdZdZdZdZdZy);TestOrderV3.test_enum_has_extra_members_flag.<locals>.Colorr  r   r7   r9   rx  Nr2  rA   rB   rC   r   rU  2  r4  rB   r   r   r   s     rC    test_enum_has_extra_members_flagz,TestOrderV3.test_enum_has_extra_members_flag0  r6  r   c                 x    | j                  t        d      5   G d dt              }d d d        y # 1 sw Y   y xY w)Nr  c                   $    e Zd ZdZdZdZdZdZeZy)HTestOrderV3.test_enum_has_extra_members_with_aliases_flag.<locals>.Colorr  r   r7   r9   rx  Nr:  rA   rB   rC   r   rY  ;  r;  rB   r   r   r   s     rC   -test_enum_has_extra_members_with_aliases_flagz9TestOrderV3.test_enum_has_extra_members_with_aliases_flag9  r=  r   N)r:   r;   r<   r   r  r  r   r'  r-  r5  r<  rB  rF  rJ  rN  rR  rV  rZ  rA   rB   rC   r  r    sM    rB   r  c                       e Zd Zd Zd Zd Zy)TestNamedTupleV3c                     G d dt         t        j                        } |ddd      }| j                  d|v        | j                  d|v        | j                  d|v        | j	                  |j
                  d       | j	                  |j                  d       | j                  t        |dd       | j                  t        |d       y )Nc                       e Zd ZdZdZdZy).TestNamedTupleV3.test_fixed_size.<locals>.Bookr)   r   r7   Nr:   r;   r<   r  authorgenrerA   rB   rC   Bookr_  G  r*  rB   rc  sizeTecklaSteven Brustfantasy)	r   r   fixedrz   r   r  ra  r   r   rj   rc  r  s      rC   test_fixed_sizez TestNamedTupleV3.test_fixed_sizeF  s    	:IOO 	 >95A&!+,	Q'(+>2)T8^D)T84rB   c                 ^    G d dt         t        j                        } |ddd      }| j                  d|v        | j                  d|v        | j                  d|v        | j	                  |j
                  d       | j	                  |j                  d       | j	                  |d   d        |dd      }| j                  d|v        | j                  d|v        | j	                  |j
                  d       | j	                  |j                  d       | j                  t        |d       y )Nc                       e Zd ZdZdZy)0TestNamedTupleV3.test_minimum_size.<locals>.Bookr)   r   N)r:   r;   r<   r  ra  rA   rB   rC   rc  rn  U  s    EFrB   rc  rd  rf  rg  rh  r7   )	r   r   minimumrz   r   r  ra  r   r   rj  s      rC   test_minimum_sizez"TestNamedTupleV3.test_minimum_sizeT  s    	:I$5$5 	 >95A&!+,	Q'(+>21y)>*A&!+,(+>2)T84rB   c                     G d dt         t        j                        } |ddd      }| j                  d|v        | j                  d|v        | j                  d|v        | j	                  |j
                  d       | j	                  |j                  d       | j	                  |j                  d        |dd      }| j                  d|v        | j                  d|v        | j	                  |j
                  d       | j	                  |j                  d       | j                  t        t        |d       | j                  t        |dd       | j                  t        |d	       y )
Nc                       e Zd ZdZdZdZy)1TestNamedTupleV3.test_variable_size.<locals>.Bookr)   r   r7   Nr`  rA   rB   rC   rc  rs  g  r*  rB   rc  rd  rf  rg  rh  rb  )r  rb  )ra  )r   r   variablerz   r   r  ra  rb  r   AttributeErrorgetattrr   rj  s      rC   test_variable_sizez#TestNamedTupleV3.test_variable_sizef  s(   	:I$6$6 	 >95A&!+,	Q'(+>2),>*A&!+,(+>2.'1g>)TK)T.ArB   N)r:   r;   r<   rk  rp  rw  rA   rB   rC   r\  r\  D  s    55$BrB   r\  c                   V    e Zd Zd Zd Zd Zd Z ej                  e	d      d        Z
y)TestStackoverflowAnswersV3c                 6    G d dt               }|}| j                  |j                  j                  d       | j	                  |j                  j
                  |j                  u        | j	                  |j                  j                  |j                  u        y )Nc                   "    e Zd ZdZdZdZdZd Zy)OTestStackoverflowAnswersV3.test_self_referential_directions.<locals>.Directionsr   r)   )r)   r   )r)   )r)   r~  c                     || _         || _        t        | j                        r<t	        | j                        }|d   |d   }}|| _        || _        | |_        | |_        y y Nr)   r~  )r  r  rR  r   r   leftright)rj   r  r  allr  r  s         rC   r   zXTestStackoverflowAnswersV3.test_self_referential_directions.<locals>.Directions.__init__  s\    t~~&t~~.C"%a&#b'%D $DI!&DJ!%DJ!%EJ 'rB   N)r:   r;   r<   r\   r[   r]   rZ   r   rA   rB   rC   
Directionsr|    s    EDED
&rB   r  r}  )	r   r   r\   r   rz   r  r[   r]   r  )rj   r  rQ   s      rC    test_self_referential_directionsz;TestStackoverflowAnswersV3.test_self_referential_directions  sg    	& 	&& /.//0rB   c                 H    G d dt               }| j                  |j                  j                  |j                  u        | j                  |j                  j                  |j
                  u        | j                  |j
                  j                  |j                  u        y )Nc                       e Zd ZdZdZdZd Zy)QTestStackoverflowAnswersV3.test_self_referential_rock_paper_scissors.<locals>.RPSrockpaperscissorsc                     t        | j                        r.t        | j                        }|d   |d   }}| |_        || _        y y r  )rR  r   r   beats)rj   r   r  r&  previouss        rC   r   zZTestStackoverflowAnswersV3.test_self_referential_rock_paper_scissors.<locals>.RPS.__init__  s@    t~~&t~~.C&)!fc"g8E"&EK!)DJ 'rB   N)r:   r;   r<   RockPaperScissorsr   rA   rB   rC   RPSr    s    DE!H*rB   r  )r   rz   r  r  r  r  )rj   r  s     rC   )test_self_referential_rock_paper_scissorszDTestStackoverflowAnswersV3.test_self_referential_rock_paper_scissors  si    	*$ 	* 	#,,67**cii78		38834rB   c                 &    G d dt               } G d d|      }t        t        j                  j	                  t
        d            5 }|j                         }d d d        | j                  t        j                  d             y # 1 sw Y   /xY w)Nc                       e Zd Zd Zy)@TestStackoverflowAnswersV3.test_arduino_headers.<locals>.CHeaderc           	         | j                   }t        | d|z        }t        |d      5 }|j                  d       | D ].  }|j                  d|j                  d|j
                  d       0 	 d d d        y # 1 sw Y   y xY w)Nz_%s__headerwzinitial header stuff here
z#define  
)r:   rv  openwriter   r   )r   r  cls_nameheader_pathfhenums         rC   r   zRTestStackoverflowAnswersV3.test_arduino_headers.<locals>.CHeader.__init_subclass__  sx    <<%c=8+CD+s+ NrHH:; # Ndii!LMNN N Ns   AA77B N)r:   r;   r<   r   rA   rB   rC   CHeaderr    s    NrB   r  c                   L    e Zd Zej                  j                  ed      ZdZdZ	y)@TestStackoverflowAnswersV3.test_arduino_headers.<locals>.Arduino	arduino.hr   r7   N)
r:   r;   r<   ospathjointempdir_Arduino__headerONETWOrA   rB   rC   Arduinor    s     ww||G[9HCCrB   r  r  zv                initial header stuff here
                #define ONE 1
                #define TWO 2
                )
r   r  r  r  r  r  readr   textwrapdedent)rj   r  r  r  datas        rC   test_arduino_headersz/TestStackoverflowAnswersV3.test_arduino_headers  sz    	Nd 	N	g 	 "'',,w45 	!wwy	! * 
 		! 	!s   BBc                     G d dt         t        d      }| j                  |j                  j                  d       | j                  |j
                  j                  d       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  j                  d	       y )
Nc                   X    e Zd Ze e e e e dZe	 e
 e dZe e e dZe e e e e y)>TestStackoverflowAnswersV3.test_create_C_like_Enum.<locals>.Id   i   i   N)r:   r;   r<   NONE	HEARTBEATFLUID_TRANSFER_REQUESTFLUID_TRANSFER_STATUS_MSGFLUID_TRANSFER_ERROR_MSGSTART_SENDING_PICTURESSTOP_SENDING_PICTURESSTART_RECORDING_VIDEO_REQSTOP_RECORDING_VIDEO_REQVOLUME_REQUEST	START_CALCLI_COMMAND_REQUESTCLI_COMMAND_RESPONSENEW_DELIVERY_REQGET_DELIVERY_FILE_REQGET_FILE_REQACK_NACKRESPONSELAST_IDrA   rB   rC   Idr    sI    "%$ &."!%$ &N   '!rB   r  r)   r   r9   r  i  i  i  )
r   r   r   r  r   r  r  r  r  r  )rj   r  s     rC   test_create_C_like_Enumz2TestStackoverflowAnswersV3.test_create_C_like_Enum  s    	
! 	@ 	*44::A>2288(C44::HE++X6))73rB   zpyparsing not installedc                 6  	
 t        t        j                  j                  t        d      d      5 }|j                  d       d d d        ddlmmm	m
	m
 ddlmmm d  G 	
f
ddt               G d	 d
t                G d d      } G d d      }| j#                  t%        |      |j&                  |j(                  |j*                  |j,                  |j.                  |j0                  |j2                  g       | j#                  |j&                  j4                  d       | j#                  |j,                  j4                  d       | j#                  |j0                  j4                  d       | j#                  |j2                  j4                  d       | j#                  t%        |      |j6                  |j8                  |j:                  |j<                  g       | j#                  |j6                  j4                  d       | j#                  |j8                  j4                  d       | j#                  |j:                  j4                  d       | j#                  |j<                  j4                  d       y # 1 sw Y   ExY w)Nc_plus_plus.hr  a]  
                    stuff before
                    enum hello {
                        Zero,
                        One,
                        Two,
                        Three,
                        Five=5,
                        Six,
                        Ten=10
                        };
                    in the middle
                    enum blah
                        {
                        alpha,
                        beta,
                        gamma = 10 ,
                        zeta = 50
                        };
                    at the end
                    r)   )GroupOptionalSuppressWord
ZeroOrMore)alphas	alphanumsnumsc                   P   
  e Zd Zed        Z fdZ 	
fdZ xZS )ETestStackoverflowAnswersV3.test_c_header_scanner.<locals>.CPPEnumTypec                     i S r   rA   )metaclsclsnamebasesr  s       rC   __prepare__zQTestStackoverflowAnswersV3.test_c_header_scanner.<locals>.CPPEnumType.__prepare__  s	     	rB   c                     t        |   |  y r   )r   r   )r  r   r  CPPEnumTyper   s      rC   r   zNTestStackoverflowAnswersV3.test_c_header_scanner.<locals>.CPPEnumType.__init__  s    k74d;rB   c           	      `   5t        |   ||fi |}|j                  |       t        |   | |||fi |S g }	 |j	                  d      }|j	                  d|j                               }t        |      5 }	|	j                         }
d d d        t        !d      \  }}}} !d      } "&%dz         } "'      }  |d        | |d      z         z         } | #||z         z         }| |d      z   |z    |d	      z   |z   }|j                  
      D ]}  \  }}}|j                  |k7  rd
}|j                  D ]V  }|j                  dk7  rt        |j                        }|j!                  |j"                  j%                         |f       |dz  }X  t        |   ||fi |}t'        |j)                               }|j+                  d        |D ]
  \  }}|||<    |D ]
  \  }}|||<    t        |   | |||fi |S # t
        $ r t        d      w xY w# 1 sw Y   xY w)N_filez_file not specified_namez{}=,r  _r   r   namesr)    r   c                 (    | d   d   dk(  rd| fS d| fS )Nr)   r  r   rA   )ps    rC   re  z_TestStackoverflowAnswersV3.test_c_header_scanner.<locals>.CPPEnumType.__new__.<locals>.<lambda>@  s"    qtAw#~!a)H 1a)H rB   )key)r   r  updater  popKeyErrorr   r   r  r  map
scanStringr  r  r   r  appendr   upperr   itemssort)(r  r  r  clsdictr  	enum_dictmembersfilecpp_enum_namer  file_contentsLBRACERBRACEEQCOMMA_enum
identifierinteger	enumValueenumListr  r  r   stopidentryr  r   r   CPPEnumr  r  r  r  r  r  r   r  r  r  s(                                rC   r  zMTestStackoverflowAnswersV3.test_c_header_scanner.<locals>.CPPEnumType.__new__  s}   ? %k7 GQV _Z^ _I$$W- g>wQVXajeijj;";;w/D !(GW]]_ E$Z .2$&GGIM. -0&,A)E (!&)c/:
t*!*V"4xWWEU@U7V"VW	 Z	8I-J!JKz&11F:Xg=NNQWW *.)G  %D%yyM1 B!%   ;;",!$U[[!1B

(8(8(:B'?@a	 	  "+wCGU[VZ[	W]]_-

H
I#( ,KD%&+IdO, $+ ,KD%&+IdO,[':7GUT]faeffI   ;#$9::;. .s   H 8H#H #H-)r:   r;   r<   r  r  r   r  r   )r   r  r  r  r  r  r  r  r  r  r  s   @rC   r  r    s,     </g /g /grB   r  c                       e Zd Zy)ATestStackoverflowAnswersV3.test_c_header_scanner.<locals>.CPPEnumNr   rA   rB   rC   r  r  H  r  rB   r  r   c                   D    e Zd Zej                  j                  ed      Zy)?TestStackoverflowAnswersV3.test_c_header_scanner.<locals>.Hellor  N)r:   r;   r<   r  r  r  r  r  rA   rB   rC   Hellor  K  s    GGLL/:ErB   r  c                   H    e Zd Zej                  j                  ed      ZdZy)>TestStackoverflowAnswersV3.test_c_header_scanner.<locals>.Blahr  blahN)	r:   r;   r<   r  r  r  r  r  r  rA   rB   rC   Blahr	  N  s    GGLL/:EErB   r  r8   r  r}  r   2   )r  r  r  r  r  r  	pyparsingr  r  r  r  r  r  r  r  r   r   r   r   ZEROr  r  THREEFIVESIXTENr   ALPHABETAGAMMAZETA)rj   r  r  r  r  r  r  r  r  r  r  r  r  r  s       @@@@@@@@@@rC   test_c_header_scannerz0TestStackoverflowAnswersV3.test_c_header_scanner  s    "'',,w8#> 	"HH  	, 	JI559	g 9	g( 9	gv	g 		;G 	;	7 	 	UUYY		5;;

EIIW\W`W`a	 	))1-**A.!,"-T
TYY

DII>	 	))1-!,))2."-_	 	s   JJN)r:   r;   r<   r  r  r  r  r  r  r  r  rA   rB   rC   ry  ry  }  s=    145(2'4T X$=>q. ?q.rB   ry  c                   "    e Zd ZdZd Zd Zd Zy)TestIssuesV3z.
    Problems that were stated in issues.
    c                     G d dt         t        t        d      }| j                  |D cg c]  }|j                   c}g d       | j                  |D cg c]  }|j
                   c}g d       | j                   |d      |j                         | j                   |d      |j                         | j                   |d      |j                         | j                   |d	      |j                         | j                   |d
      |j                         | j                   |d      |j                         y c c}w c c}w )Nc                       e Zd ZdZdZdZy)7TestIssuesV3.test_auto_multi_int_1.<locals>.Measurementr  r  r  Nr  rA   rB   rC   r  r  j  r  rB   r  r)   )r   r)   r   r7   rp   r  r  r  r   r  r7   r  )
r  r   r   r   r   r   r^  rp   r  r  rj   r  r  s      rC   test_auto_multi_int_1z"TestIssuesV3.test_auto_multi_int_1i  s    	#|^1 	 	;7a!''7C+6Q!&&68OPk!nkoo6k*-{?k!nkoo6k*-{?k!nk&7&78k*-{/@/@A 86s   EEc                     G d dt         t        t        t        fd      }| j	                  |D cg c]  }|j
                   c}g d       | j	                  |D cg c]  }|j                   c}g d       | j                   |d      |j                         | j                   |d      |j                         | j                   |d      |j                         | j                   |d	      |j                         | j                   |d
      |j                         | j                   |d      |j                         y c c}w c c}w )Nc                       e Zd ZdZdZdZy)7TestIssuesV3.test_auto_multi_int_2.<locals>.Measurementr  r  r  Nr  rA   rB   rC   r  r#  x  r  rB   r  r)   r   r  r  r  r   r  r7   r  )r  r   r   r   r   r   r   r^  rp   r  r  r  s      rC   test_auto_multi_int_2z"TestIssuesV3.test_auto_multi_int_2w  s    	#tz8.DA 	 	;7a!''7C+6Q!&&68OPk!nkoo6k*-{?k!nkoo6k*-{?k!nk&7&78k*-{/@/@A 86s   EEc                     G d dt         t        d      }| j                  |j                  j                  d       | j                  |j                  j
                  d       | j                  |j                  j                  d       t        |ddd	       | j                  t        |      |j                  |j                  |j                  |j                  g       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                   |d      |j                  u        | j                   |d	      |j                  u        y )
Nc                       e Zd ZdZdZdZy)6TestIssuesV3.test_extend_enum_with_init.<locals>.Color)rx   yes)2no)3maybeNr   rA   rB   rC   r   r'    s    CEDrB   r   zfoo barrx  rx   r(  opacity4never)r   r   r   r   r   r  r   r   r   r   r   r-  r   rz   r   s     rC   test_extend_enum_with_initz'TestIssuesV3.test_extend_enum_with_init  s    	 D:I 	  	#.,.E9c73euyy%++uzz5==&YZ,,c2++Y7c
emm34g%--78rB   N)r:   r;   r<   r   r   r$  r0  rA   rB   rC   r  r  d  s    BB9rB   r  c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Z ej&                  ed      d        Z ej&                  ed      d        Z ej&                  ed      d        Z ej&                  ed      d        Z ej&                  ed      d        Z ej&                  ed      d        Z ej&                  ed      d        Z ej&                  ed      d        Z ej&                  exr ee k  d      d        Z! ej&                  exr ee k\  d      d        Z! ej&                  e"d      d        Z# ej&                  e"d      d        Z$ ej&                  e%d       d!        Z&d" Z'y#)$TestExtendEnumV3c                     G d dt               }| j                  t        dt        |dd       t        |dd       | j	                  |j
                  j                  d       | j	                  |j
                  j                  d       | j                  |j
                  |v        | j	                   |d      |j
                         | j	                  |d   |j
                         | j	                  t        |      d       t        |d       | j	                  |j                  j                  d       | j	                  |j                  j                  d       | j                  |j                  |v        | j	                   |d      |j                         | j	                  |d   |j                         | j	                  t        |      d       y )	Nc                       e Zd ZdZdZdZy)6TestExtendEnumV3.test_extend_enum_plain.<locals>.Colorr   r7   r8   Nr   rA   rB   rC   r   r5    r  rB   r   z(.blue. already in use as .Color.blue: 3.r   rM   r  r9   mauve)r   r   r   r   r   r  r   r   rz   rR  r6  r   s     rC   r  z'TestExtendEnumV3.test_extend_enum_plain  s]   	D 	 	y*TVachjprstE7A&))73**A.u,-q5;;/w5UQ'E7#))73**A.u,-q5;;/w5UQ'rB   c                     G d dt               }t        |dd       | j                  |j                  j                  d       | j                  |j                  j
                  d       | j                  |j                  |v        | j                   |d      |j                         | j                  |d   |j                         | j                  t        |      d       y )Nc                       e Zd ZdZdZdZy)6TestExtendEnumV3.test_extend_enum_alias.<locals>.Colorr   r7   r8   Nr   rA   rB   rC   r   r9    r  rB   r   rJ  r   r   r8   )	r   r   r   rJ  r   r   rz   r   rR  r   s     rC   test_extend_enum_aliasz'TestExtendEnumV3.test_extend_enum_alias  s    	D 	 	E61%%0))1-

e+,q5::.v		2UQ'rB   c                     G d dt               }| j                  t        dt        |dd       | j	                  |j
                  j                  d       | j	                  |j
                  j                  d       | j                  |j
                  |v        | j	                   |d      |j
                         | j	                  |d   |j
                         | j	                  |j                  j                  d       | j	                  |j                  j                  d       | j                  |j                  |v        | j	                   |d      |j                         | j	                  |d	   |j                         | j	                  |j                  j                  d	       | j	                  |j                  j                  d
       | j                  |j                  |v        | j	                   |d
      |j                         | j	                  t        |      d
       t        |dd       | j	                  |j                  j                  d       | j	                  |j                  j                  d       | j                  |j                  |v        | j	                   |d      |j                         | j	                  |d   |j                         | j	                  t        |      d       | j                  t        dt        |dd       t        |d       | j	                  |j                  j                  d       | j	                  |j                  j                  d       | j                  |j                  |v        | j	                   |d      |j                         | j	                  |d   |j                         | j	                  t        |      d       y )Nc                       e Zd ZdZdZdZy)7TestExtendEnumV3.test_extend_enum_unique.<locals>.Colorr   r7   r8   Nr   rA   rB   rC   r   r=    r  rB   r   z0<Color.rojo: 1> is a duplicate of <Color.red: 1>rJ  r   r   r   r7   r   r8   r  r9   z3<Color.verde: 2> is a duplicate of <Color.green: 2>r  r6  rM   )r	   r   rK  r   r   r   r   r   rz   r   r   rR  r  r6  r   s     rC   test_extend_enum_uniquez(TestExtendEnumV3.test_extend_enum_unique  s   	J 	 	z+^`kmrtz|}~/!,		U*+q599-uuyy1))73**A.u,-q5;;/v

3&1))1-

e+,q5::.UQ'E7A&))73**A.u,-q5;;/w5UQ'z+`bmotv}  @A  	BE7#))73**A.u,-q5;;/w5UQ'rB   c                     G d dt               }t        |dd       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  |v        | j                   |d      |j                         | j                  |d   |j                         | j                  t        |      d       | j                  |j                  j                  d       y )Nc                       e Zd ZdZdZdZy)@TestExtendEnumV3.test_extend_enum_shadow_property.<locals>.Colorr   r7   r8   Nr   rA   rB   rC   r   rA    r  rB   r   r   r9   r   )r   r   r   r   r   rz   rR  r   r   s     rC    test_extend_enum_shadow_propertyz1TestExtendEnumV3.test_extend_enum_shadow_property  s    	D 	 	E7A&))73**A.u,-q5;;/w5UQ'!,rB   c                 ,    G d dt               } G d d|t              }| j                  t        dt        |dd       | j                  t        |      d       | j                  t        |      |j                  |j                  |j                  g       y )	Nc                       e Zd Zd Zy)<TestExtendEnumV3.test_extend_enum_shadow_base.<locals>.hohumc                     | j                   S zcyanize a colorr  r   s    rC   r  zATestExtendEnumV3.test_extend_enum_shadow_base.<locals>.hohum.cyan      zz!rB   Nr:   r;   r<   r  rA   rB   rC   hohumrE        "rB   rJ  c                       e Zd ZdZdZdZy)<TestExtendEnumV3.test_extend_enum_shadow_base.<locals>.Colorr   r7   r8   Nr   rA   rB   rC   r   rM    r  rB   r   already in use in superclassr  r9   r8   )r  r   r   r   r   r   rR  r   r   r   r   rj   rJ  r   s      rC   test_extend_enum_shadow_basez-TestExtendEnumV3.test_extend_enum_shadow_base  su    	"F 	"	E4 	 	y*I;X]_eghiUQ'euyy%++uzz&JKrB   c                 F    G d dt               }t        |ddd       | j                  |j                  j                  d       | j                  |j                  j
                  d       | j                  |j                  |v        | j                   |d      |j                         | j                   |d      |j                         | j                  |d   |j                         | j                  t        |      d       | j                  t        dt        |d       y )	Nc                       e Zd ZdZdZdZy);TestExtendEnumV3.test_extend_enum_multivalue.<locals>.Colorr   r9   r  r7   rM   rx  r8   r  r  Nr   rA   rB   rC   r   rS         CEDrB   r   r  r}     r9   z'no values specified for MultiValue enumr6  )
r   r   r   r  r   r   rz   rR  r   rK  r   s     rC   test_extend_enum_multivaluez,TestExtendEnumV3.test_extend_enum_multivalue  s    	N 	 	E7B+))73**B/u,-rEKK0rEKK0w5UQ'z+TVachjqrrB   c                     G d dt               }| j                  t        dt        |dd       | j	                  |j
                  j                  d       | j	                  |j
                  j                  d       | j                  |j
                  |v        | j	                   |d      |j
                         | j	                   |d      |j
                         | j	                   |d      |j
                         | j	                  |d   |j
                         | j	                  |j                  j                  d	       | j	                  |j                  j                  d
       | j                  |j                  |v        | j	                   |d
      |j                         | j	                   |d      |j                         | j	                   |d      |j                         | j	                  |d   |j                         | j	                  |j                  j                  d       | j	                  |j                  j                  d       | j                  |j                  |v        | j	                   |d      |j                         | j	                   |d      |j                         | j	                   |d      |j                         | j	                  t        |      d       y )Nc                       e Zd ZdZdZdZy)ATestExtendEnumV3.test_extend_enum_multivalue_alias.<locals>.ColorrT  rU  rV  Nr   rA   rB   rC   r   r\    rW  rB   r   z0<Color.rojo: 7> is a duplicate of <Color.red: 1>rJ  r  r   r   r9   r   r7   rM   rx  r   r8   r  r  )r   r   rK  r   r   r   r   r   rz   r   r   rR  r   s     rC   !test_extend_enum_multivalue_aliasz2TestExtendEnumV3.test_extend_enum_multivalue_alias  s   	N 	 	z+^`kmrtz|}~/!,		U*+q599-q599-q599-uuyy1))73**A.u,-q5;;/q5;;/q5;;/v

3&1))1-

e+,q5::.q5::.q5::.UQ'rB   c                 D    G d dt         t              }| j                  |j                  t         u        t	        |ddd       | j                  t        |      |j                  |j                  |j                  |j                  g       | j                   |d      |j                  u        | j                   |d      |j                  u        | j                  |j                  j                  dk(         | j                  |j                  j                  dk(         y )Nc                       e Zd ZdZdZdZy);TestExtendEnumV3.test_extend_enum_multivalue_str.<locals>.M)value_1VALUE_1)value_2VALUE_2)value_3VALUE_3N)r:   r;   r<   rb  rd  rf  rA   rB   rC   r  r`  ,  s    *G*G*GrB   r  VALUE_4value_4)rh   r   rz   _member_type_r   r   r   rb  rd  rf  rg  r   r   )rj   r  s     rC   test_extend_enum_multivalue_strz0TestExtendEnumV3.test_extend_enum_multivalue_str+  s    	+^ 	+ 	3./Ay)Y7a199aiiAII"NO)		12)		12		)34		945rB   c                     G d dt               }dD ]  \  }}t        |||        | j                  t        |      d       | j                  t	        |      |j
                  |j                  |j                  |j                  |j                  g       | j                  |j
                  j                  d       | j                  |j                  j                  d       y )Nc                       e Zd ZdZdZy)3TestExtendEnumV3.test_extend_intenum.<locals>.Index     Nr:   r;   r<   
DeviceTypeErrorRegisterrA   rB   rC   Indexrm  9      "J"MrB   rs  )ControlWordi@`  )
StatusWordA`  )OperationModei``  rM   rn  rx  )r   r   r   rR  r   rq  rr  rv  rw  ry  r   rj   rs  r   r   s       rC   test_extend_intenumz$TestExtendEnumV3.test_extend_intenum8  s    	#G 	# 	,KD%
 tU+	, 	UQ'eu'7'79L9LeN_N_afaqaqsx  tG  tG  'H  	I))//8))//8rB   c                 f    G d dt               }d}t        |dddd       t        |dd	d
d       | j                  t        |      |dz          | j                  t	        |      dd  |j
                  |j                  g       | j                  |j
                  j                  d       | j                  |j
                  j                  d       | j                  |j
                  j                  d       | j                  |j
                  j                  d       | j                  |j                  j                  d	       | j                  |j                  j                  d       | j                  |j                  j                  d
       | j                  |j                  j                  d       y )Nc                       e Zd Zd ZdZdZdZy);TestExtendEnumV3.test_extend_multi_init.<locals>.HTTPStatusc                 \    t         j                  | |      }||_        ||_        ||_        |S r   r  r  _value_phrasedescriptionr   r   r  r  r   s        rC   r  zCTestExtendEnumV3.test_extend_multi_init.<locals>.HTTPStatus.__new__K  ,    kk#u-##
"-
rB   d   Continuez!Request received, please continuee   zSwitching Protocolsz.Switching to new protocol; obey Upgrade headerf   
Processingr  Nr:   r;   r<   r  CONTINUESWITCHING_PROTOCOLS
PROCESSINGrA   rB   rC   
HTTPStatusr~  J       LH"n.JrB   r  r8   BAD_SPAM  
Too greasyfor a trainBAD_EGGS  	Too greenr  r7   )r   r   r   rR  r   r  r  r   r   r  r  rj   r  lengths      rC   test_extend_multi_initz'TestExtendEnumV3.test_extend_multi_initI  s`   
	/ 
	/ J
C}MJ
CbAZ&(3Z %$$j&9&9:	 	,,22C8,,11:>,,33\B,,88-H,,22C8,,11:>,,33[A,,88"=rB   c                 J    G d dt               }t        |d       | j                   |d      |j                  u        | j                  t	        |j                  |             | j                  |j                  j                  d       t        |dd       | j                   |d      |j                  u        | j                  t	        |j                  |             | j                  |j                  j                  d       | j                  t        |t                      y )Nc                       e Zd ZdZdZdZdZy)0TestExtendEnumV3.test_extend_flag.<locals>.Colorr)   r   r7   r9   Nr:   r;   r<   r  r   r   r   rA   rB   rC   r   r  g      ECEDrB   r   MAGENTArx  PURPLEr  )	r   r   rz   r  r|   r   r   r  r{   r   s     rC   test_extend_flagz!TestExtendEnumV3.test_extend_flagf  s    	D 	
 	E9%aEMM12
5==%89,,a0E8R(b	U\\12
5<<78++R0
5$/0rB   c                     G d dt               }t        |dd       | j                   |d      |j                  u        | j                  t	        |j                  |             | j                  |j                  j                  d       | j                  t        |t                      t        |d       | j                   |d      |j                  u        | j                  t	        |j                  |             | j                  |j                  j                  d       t        |d       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  |v        | j                   |d      |j                         | j                  |d   |j                         | j                  t        |      d	       y )
Nc                       e Zd ZdZdZdZdZy):TestExtendEnumV3.test_extend_flag_backwards.<locals>.Colorr)   r   r7   r9   Nr  rA   rB   rC   r   r  w  r  rB   r   r  r  r  rx  r6     rM   )r   r   rz   r  r|   r   r   r{   r  r6  r   rR  r   s     rC   test_extend_flag_backwardsz+TestExtendEnumV3.test_extend_flag_backwardsv  sd   	D 	
 	E8R(b	U\\12
5<<78++R0
5$/0E9%aEMM12
5==%89,,a0E7#))73**B/u,-rEKK0w5UQ'rB   c                     G d dt               }t        |d       | j                   |d      |j                  u        | j                  t	        |j                  |             | j                  |j                  j                  d       t        |dd       | j                   |d      |j                  u        | j                  t	        |j                  |             | j                  |j                  j                  d       | j                  t        |t                     t        |d       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  |v        | j                   |d      |j                         | j                  |d   |j                         | j                  t        |      d	       y )
Nc                       e Zd ZdZdZdZdZy)3TestExtendEnumV3.test_extend_intflag.<locals>.Colorr)   r   r7   r9   Nr  rA   rB   rC   r   r    r  rB   r   r  rx  r  r  r6  r  rM   )r   r   rz   r  r|   r   r   r  r{   r   r6  r   rR  r   s     rC   test_extend_intflagz$TestExtendEnumV3.test_extend_intflag  sd   	G 	
 	E9%aEMM12
5==%89,,a0E8R(b	U\\12
5<<78++R0
5$/0E7#))73**B/u,-rEKK0w5UQ'rB   c                     G d dt               }t        |dd       | j                   |d      |j                  u        | j                  t	        |j                  |             | j                  |j                  j                  d       | j                  t        |t                     t        |d       | j                   |d      |j                  u        | j                  t	        |j                  |             | j                  |j                  j                  d       t        |d       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  |v        | j                   |d      |j                         | j                  |d   |j                         | j                  t        |      d	       y )
Nc                       e Zd ZdZdZdZdZy)=TestExtendEnumV3.test_extend_intflag_backwards.<locals>.Colorr)   r   r7   r9   Nr  rA   rB   rC   r   r    r  rB   r   r  r  r  rx  r6  r  rM   )r   r   rz   r  r|   r   r   r{   r   r  r6  r   rR  r   s     rC   test_extend_intflag_backwardsz.TestExtendEnumV3.test_extend_intflag_backwards  sd   	G 	
 	E8R(b	U\\12
5<<78++R0
5$/0E9%aEMM12
5==%89,,a0E7#))73**B/u,-rEKK0w5UQ'rB   c                     G d dt               }t        |d       | j                  |j                  j                  d       | j                  |j                  j
                  d       | j                  t        |      d       y )Nc                   6    e Zd Z e       Z e       Z e       Zy)3TestExtendEnumV3.test_extend_strenum.<locals>.ColorNr:   r;   r<   r   r   r   r   rA   rB   rC   r   r        &CFE6DrB   r   r  r  r9   r   r   r   r  r   r   rR  r   s     rC   test_extend_strenumz$TestExtendEnumV3.test_extend_strenum  sb    	G 	 	E7#))73**G4UQ'rB   zStdlib Enum not availablec                     G d dt               }| j                  t        |j                  dd       d        t	        |dd       | j                  |j
                  j                  d       | j                  |j
                  j                  d       | j                  |j
                  |v        | j                   |d      |j
                         | j                  |d   |j
                         | j                  t        |      d       y )Nc                       e Zd ZdZdZdZy)7TestExtendEnumV3.test_extend_enum_stdlib.<locals>.Colorr   r7   r8   Nr   rA   rB   rC   r   r    r  rB   r   _values_r  r9   )
r   r   rv  r   r   r  r   r   rz   rR  r   s     rC   test_extend_enum_stdlibz(TestExtendEnumV3.test_extend_enum_stdlib  s    	J 	 	J=tDE7A&))73**A.u,-q5;;/w5UQ'rB   c                     G d dt               }| j                  t        dt        |dd       t        |dd       | j	                  |j
                  j                  d       | j	                  |j
                  j                  d       | j                  |j
                  |v        | j	                   |d      |j
                         | j	                  |d   |j
                         | j	                  t        |      d       | j	                  t        |      |j                  |j                  |j                  |j
                  g       | j	                  |D cg c]  }|j                   c}g d       t        |d	       | j	                  |j                  j                  d	       | j	                  |j                  j                  d       | j                  |j                  |v        | j	                   |d      |j                         | j	                  |d	   |j                         | j	                  t        |      d       y c c}w )
Nc                       e Zd ZdZdZdZy)=TestExtendEnumV3.test_extend_enum_plain_stdlib.<locals>.Colorr   r7   r8   Nr   rA   rB   rC   r   r    r  rB   r   zalready in use asr   rM   r  r9   )r   r7   r8   r9   r6  )r   r   r   r   r   r  r   r   rz   rR  r   r   r   r   r6  )rj   r   r  s      rC   test_extend_enum_plain_stdlibz.TestExtendEnumV3.test_extend_enum_plain_stdlib  s   	J 	 	y*={ESY[\]E7A&))73**A.u,-q5;;/w5UQ'euyy%++uzz5;;&WX51a!''1<@E7#))73**A.u,-q5;;/w5UQ' 2s   Ic                     G d dt               }t        |dd       | j                  |j                  j                  d       | j                  |j                  j
                  d       | j                  |j                  |v        | j                   |d      |j                         | j                  |d   |j                         | j                  t        |      d       y )Nc                       e Zd ZdZdZdZy)=TestExtendEnumV3.test_extend_enum_alias_stdlib.<locals>.Colorr   r7   r8   Nr   rA   rB   rC   r   r    r  rB   r   rJ  r   r   r8   )	r   r   r   rJ  r   r   rz   r   rR  r   s     rC   test_extend_enum_alias_stdlibz.TestExtendEnumV3.test_extend_enum_alias_stdlib  s    	J 	 	E61%%0))1-

e+,q5::.v		2UQ'rB   c                     G d dt               }t        |dd       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  |v        | j                   |d      |j                         | j                  |d   |j                         | j                  t        |      d       | j                  |j                  j                  d       y )Nc                       e Zd ZdZdZdZy)GTestExtendEnumV3.test_extend_enum_shadow_property_stdlib.<locals>.Colorr   r7   r8   Nr   rA   rB   rC   r   r    r  rB   r   r   r9   r   )r   r   r   r   r   rz   rR  r   r   s     rC   'test_extend_enum_shadow_property_stdlibz8TestExtendEnumV3.test_extend_enum_shadow_property_stdlib  s    	J 	 	E7A&))73**A.u,-q5;;/w5UQ'!,rB   c                 ,    G d dt               } G d d|t              }| j                  t        dt        |dd       | j                  t        |      d       | j                  t        |      |j                  |j                  |j                  g       y )	Nc                       e Zd Zd Zy)CTestExtendEnumV3.test_extend_enum_shadow_base_stdlib.<locals>.hohumc                     | j                   S rG  r  r   s    rC   r  zHTestExtendEnumV3.test_extend_enum_shadow_base_stdlib.<locals>.hohum.cyan  rH  rB   NrI  rA   rB   rC   rJ  r    rK  rB   rJ  c                       e Zd ZdZdZdZy)CTestExtendEnumV3.test_extend_enum_shadow_base_stdlib.<locals>.Colorr   r7   r8   Nr   rA   rB   rC   r   r    r  rB   r   rN  r  r9   r8   )r  r   r   r   r   r   rR  r   r   r   r   rO  s      rC   #test_extend_enum_shadow_base_stdlibz4TestExtendEnumV3.test_extend_enum_shadow_base_stdlib  su    	"F 	"	E: 	 	y*I;X]_eghiUQ'euyy%++uzz&JKrB   zStdlib IntEnum not availablec                     G d dt               }dD ]  \  }}t        |||        | j                  t        |      d       | j                  t	        |      |j
                  |j                  |j                  |j                  |j                  g       | j                  |j
                  j                  d       | j                  |j                  j                  d       y )Nc                       e Zd ZdZdZy):TestExtendEnumV3.test_extend_intenum_stdlib.<locals>.Indexrn  ro  Nrp  rA   rB   rC   rs  r     rt  rB   rs  ru  rM   rn  rx  )r   r   r   rR  r   rq  rr  rv  rw  ry  r   rz  s       rC   test_extend_intenum_stdlibz+TestExtendEnumV3.test_extend_intenum_stdlib  s    	#M 	# 	,KD%
 tU+	, 	UQ'eu'7'79L9LeN_N_afaqaqsx  tG  tG  'H  	I))//8))//8rB   c                 f    G d dt               }d}t        |dddd       t        |dd	d
d       | j                  t        |      |dz          | j                  t	        |      dd  |j
                  |j                  g       | j                  |j
                  j                  d       | j                  |j
                  j                  d       | j                  |j
                  j                  d       | j                  |j
                  j                  d       | j                  |j                  j                  d	       | j                  |j                  j                  d       | j                  |j                  j                  d
       | j                  |j                  j                  d       y )Nc                       e Zd Zd ZdZdZdZy)BTestExtendEnumV3.test_extend_multi_init_stdlib.<locals>.HTTPStatusc                 \    t         j                  | |      }||_        ||_        ||_        |S r   r  r  s        rC   r  zJTestExtendEnumV3.test_extend_multi_init_stdlib.<locals>.HTTPStatus.__new__3  r  rB   r  r  r  Nr  rA   rB   rC   r  r  2  r  rB   r  r8   r  r  r  r  r  r  r  r  r7   r  )r   r   r   rR  r   r  r  r   r   r  r  r  s      rC   test_extend_multi_init_stdlibz.TestExtendEnumV3.test_extend_multi_init_stdlib0  s`   
	/ 
	/ J
C}MJ
CbAZ&(3Z %$$j&9&9:	 	,,22C8,,11:>,,33\B,,88-H,,22C8,,11:>,,33[A,,88"=rB   zStdlib Flag not availablec                 J    G d dt               }t        |d       | j                   |d      |j                  u        | j                  t	        |j                  |             | j                  |j                  j                  d       t        |dd       | j                   |d      |j                  u        | j                  t	        |j                  |             | j                  |j                  j                  d       | j                  t        |t                      y )Nc                       e Zd ZdZdZdZdZy)7TestExtendEnumV3.test_extend_flag_stdlib.<locals>.Colorr)   r   r7   r9   Nr  rA   rB   rC   r   r  P  r  rB   r   r  rx  r  r  )	r   r   rz   r  r|   r   r   r  r{   r   s     rC   test_extend_flag_stdlibz(TestExtendEnumV3.test_extend_flag_stdlibN  s    	J 	
 	E9%aEMM12
5==%89,,a0E8R(b	U\\12
5<<78++R0
5*56rB   c                     G d dt               }t        |dd       | j                   |d      |j                  u        | j                  t	        |j                  |             | j                  |j                  j                  d       | j                  t        |t                      t        |d       | j                   |d      |j                  u        | j                  t	        |j                  |             | j                  |j                  j                  d       t        |d       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  |v        | j                   |d      |j                         | j                  |d   |j                         y )	Nc                       e Zd ZdZdZdZdZyATestExtendEnumV3.test_extend_flag_backwards_stdlib.<locals>.Colorr)   r   r7   r9   Nr  rA   rB   rC   r   r  a  r  rB   r   r  r  r  r  r6      r   r   rz   r  r|   r   r   r{   r  r6  r   r   s     rC   !test_extend_flag_backwards_stdlibz2TestExtendEnumV3.test_extend_flag_backwards_stdlib_  sP   	J 	
 	E8R(b	U\\12
5<<78++R0
5*56E9%b	U]]23
5==%89,,R0E7#))73**B/u,-rEKK0w5rB   c                     G d dt               }t        |dd       | j                   |d      |j                  u        | j                  t	        |j                  |             | j                  |j                  j                  d       | j                  t        |t                      t        |d       | j                   |d      |j                  u        | j                  t	        |j                  |             | j                  |j                  j                  d       t        |d       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  |v        | j                   |d      |j                         | j                  |d   |j                         y )	Nc                       e Zd ZdZdZdZdZyr  r  rA   rB   rC   r   zATestExtendEnumV3.test_extend_flag_backwards_stdlib.<locals>.Colorz  r  rB   r   r  r  r  rx  r6  r  r  r   s     rC   r  z2TestExtendEnumV3.test_extend_flag_backwards_stdlibx  sP   	J 	
 	E8R(b	U\\12
5<<78++R0
5*56E9%aEMM12
5==%89,,Q/E7#))73**B/u,-rEKK0w5rB   zStdlib IntFlag not availablec                     G d dt               }t        |d       | j                   |d      |j                  u        | j                  t	        |j                  |             | j                  |j                  j                  d       t        |dd       | j                   |d      |j                  u        | j                  t	        |j                  |             | j                  |j                  j                  d       | j                  t        |t                     t        |d       | j                  |j                  j                  d       | j                  |j                  j                  d       | j                  |j                  |v        | j                   |d      |j                         | j                  |d   |j                         y )	Nc                       e Zd ZdZdZdZdZy):TestExtendEnumV3.test_extend_intflag_stdlib.<locals>.Colorr)   r   r7   r9   Nr  rA   rB   rC   r   r    r  rB   r   r  rx  r  r  r6  r  )r   r   rz   r  r|   r   r   r  r{   r   r6  r   r   s     rC   test_extend_intflag_stdlibz+TestExtendEnumV3.test_extend_intflag_stdlib  sP   	M 	
 	E9%aEMM12
5==%89,,a0E8R(b	U\\12
5<<78++R0
5*56E7#))73**B/u,-rEKK0w5rB   c                 4    G d dt               }t        t        k\  rd}d}d}nd}d}d}t        |dd	       | j	                   |d	      |j
                  u        | j	                  t        |j
                  |             | j                  |j
                  j                  d	       | j	                  t        |t                     t        |d
       | j	                   ||      |j                  u        | j	                  t        |j                  |             | j                  |j                  j                  |       t        |d       | j                  |j                  j                  d       | j                  |j                  j                  |       | j	                  |j                  |v        | j                   ||      |j                         | j                  |d   |j                         | j                  t        |      |t        |             y )Nc                       e Zd ZdZdZdZdZy)DTestExtendEnumV3.test_extend_intflag_backwards_stdlib.<locals>.Colorr)   r   r7   r9   Nr  rA   rB   rC   r   r    r  rB   r   rM   rx  r  r  r  r  r  r  r6  )r   r    r&   r   rz   r  r|   r   r   r{   r   r  r6  r   rR  r   )rj   r   r  r  r6  s        rC   $test_extend_intflag_backwards_stdlibz5TestExtendEnumV3.test_extend_intflag_backwards_stdlib  s   	M 	
 F?FGEFGEE8R(b	U\\12
5<<78++R0
5*56E9%g%--78
5==%89,,g6E7#))73**E2u,-uu{{3w5UVT%[9rB   zStdlib StrEnum not availablec                     G d dt               }t        |d       | j                  |j                  j                  d       | j                  |j                  j
                  d       | j                  t        |      d       y )Nc                   6    e Zd Z e       Z e       Z e       Zy):TestExtendEnumV3.test_extend_strenum_stdlib.<locals>.ColorNr  rA   rB   rC   r   r    r  rB   r   r  r  r9   r  r   s     rC   test_extend_strenum_stdlibz+TestExtendEnumV3.test_extend_strenum_stdlib  sb    	G 	 	E7#))73**G4UQ'rB   c                 b     G d dt         d      }| j                  t        dt        |dd       y )Nc                       e Zd Zy)2TestExtendEnumV3.test_extend_error.<locals>.MyEnumNr   rA   rB   rC   MyEnumr    r  rB   r  z	var1 var2r   zmissing value for: .var2.
NEW_MEMBERmy_var1)r   r   r   r   )rj   r  s     rC   test_extend_errorz"TestExtendEnumV3.test_extend_error  s,    	T 	y*E{TZ\hjstrB   N)(r:   r;   r<   r  r:  r>  rB  rP  rY  r]  rj  r{  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r  r  r   r  r    r&   r  r   r  r  r   r  r  rA   rB   rC   r2  r2    sL   (.('(T-Ls (869">:1 (2(0(2( X%@A( B( X%@A( B(2 X%@A( B( X%@A- B- X%@AL BL X(FG9 H9" X(FG> H>: X%@A7 B7  X68ST6 U60 X79TU6 V60 X(FG6 H6. X(FG : H :D X(FG( H(urB   r2  __main__zD'test_v3.py' should not be run by itself; it's included in 'test.py')Er  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(   collectionsr*   ri   r+   pickler,   r-   r.   r/   r  r0   r1   r  systempfiler  r  ImportErrorSyntaxErrorr   r   RuntimeErrorr3   r  r\  ry  r  r2  r:   rA   rB   rC   <module>r     s   a a a V V V Y Y Y f f > > > ? #  @ @ # 	 
   "
g0 g0Ty( yx5Bx 5Bre. e.N.98 .9`G	ux G	uT z
]
^^ S> 	[! I
  "!N"s$   C1 D  1	C=<C= D
	D
