o
    ǋiO7                 	   @   s  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l1Z1zddl8Z8W n e9e:fy   dZ8Y nw ze; W n e<y   e=Z;Y nw G dd de2Z>G dd de2Z?G dd de2Z@G dd de2ZAG dd de2ZBG dd de2ZCeDdkre=ddS )   )	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                   @   sD  e Zd Zdd Zeeddd Zeeddd Zee	e
kdd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Z d5d6 Z!d7d8 Z"d9d: Z#d;d< Z$d=d> Z%d?d@ Z&dAdB Z'dCdD Z(dEdF Z)dGdH Z*dIdJ Z+dKdL Z,dMdN Z-dOdP Z.dQdR Z/dSdT Z0dUdV Z1dWdX Z2dYdZ Z3d[d\ Z4d]d^ Z5d_d` Z6dadb Z7dcdd Z8dedf Z9dgdh Z:didj Z;dkdl Z<e	e=krdmdn Z>dodp Z?dqdr Z@e	eAkrdsdt ZBn	e	e
krdudt ZBe	eAkrdvdw ZCdxdy ZDdzd{ ZEd|S )}
TestEnumV3c                 C   s   G dd dt }|| _G dd dtt }|| _G dd dt}|| _G dd dtt }|| _d	d
lm	} G dd d|t }|| _
d S )Nc                   @      e Zd ZdZdZdZdZdS )z TestEnumV3.setUp.<locals>.Seasonr            N)__name__
__module____qualname__SPRINGSUMMERAUTUMNWINTER r=   r=   Q/home/air/goalskill_sales/back/venv/lib/python3.10/site-packages/aenum/test_v3.pySeason!   
    r?   c                   @   s   e Zd ZdZdZde ZdS )z#TestEnumV3.setUp.<locals>.KonstantsgB
@gJM!	@r3   N)r6   r7   r8   EPITAUr=   r=   r=   r>   	Konstants(       rD   c                   @       e Zd ZdZdZdZdZdZdS )z TestEnumV3.setUp.<locals>.Grades   r5   r4   r3   r(   N)r6   r7   r8   ABCDFr=   r=   r=   r>   Grades.       rM   c                   @   r2   )z%TestEnumV3.setUp.<locals>.DirectionaleastwestnorthsouthN)r6   r7   r8   EASTWESTNORTHSOUTHr=   r=   r=   r>   Directional6   r@   rW   r(   )datec                   @      e Zd ZdZdZdS )z!TestEnumV3.setUp.<locals>.Holiday)  r   r   )rZ   r4      N)r6   r7   r8   NEW_YEARIDES_OF_MARCHr=   r=   r=   r>   Holiday>       r^   )r   r?   floatrD   r   rM   strrW   datetimerX   r^   )selfr?   rD   rM   rW   rX   r^   r=   r=   r>   setUp    s   
zTestEnumV3.setUpzStdlib enum not availablec                 C   s  |  t| jt |  t| jjt |  t| jt | t| jt |  t| jj	t | t| jj	t t
tkrG dd dt}|  t|t |  t|jt |  t|t |  t|jt G dd dt}|  t|t |  t|jt |  t|t |  t|jt | t|t | t|jt t
tkrG dd dt}|  t|t |  t|jt | t|t | t|jt d S d S )Nc                   @      e Zd ZdZdS )z1TestEnumV3.test_stdlib_inheritence.<locals>.AFlagr   Nr6   r7   r8   oner=   r=   r=   r>   AFlagN       rh   c                   @   re   )z5TestEnumV3.test_stdlib_inheritence.<locals>.AnIntFlagr   Nrf   r=   r=   r=   r>   	AnIntFlagU   ri   rj   c                   @   re   )z4TestEnumV3.test_stdlib_inheritence.<locals>.AStrEnum1Nrf   r=   r=   r=   r>   AStrEnum_   ri   rl   )
assertTrue
issubclassr?   r   
isinstancer9   rM   assertFalser   rH   r   r#   r   rg   r   r   r   r%   r   r   )rc   rh   rj   rl   r=   r=   r>   test_stdlib_inheritenceC   s4   z"TestEnumV3.test_stdlib_inheritencec                 C   s   z8t   G dd dt}| td G dd dt}G dd d||d}W d    n1 s/w   Y  W t  nt  w G d	d
 d
t|d}d S )Nc                       s   e Zd Z fddZ  ZS )z<TestEnumV3.test_stdlib_bad_getattribute.<locals>.BadEnumTypec                    s"   t  |}t|| r|  |S N)super__getattribute__ro   	deprecate)clsnameobj	__class__r=   r>   rt   k   s   
zMTestEnumV3.test_stdlib_bad_getattribute.<locals>.BadEnumType.__getattribute__)r6   r7   r8   rt   __classcell__r=   r=   ry   r>   BadEnumTypej   s    r|   zendless recursionc                   @      e Zd ZdS )z9TestEnumV3.test_stdlib_bad_getattribute.<locals>.BaseEnumNr6   r7   r8   r=   r=   r=   r>   BaseEnumq       r   c                   @   re   )z8TestEnumV3.test_stdlib_bad_getattribute.<locals>.BadEnumbarNr6   r7   r8   FOOr=   r=   r=   r>   BadEnums   ri   r   	metaclassc                   @   re   )z9TestEnumV3.test_stdlib_bad_getattribute.<locals>.OkayEnumr   Nr   r=   r=   r=   r>   OkayEnumx   ri   r   )r&   r   assertRaisesRegexRecursionErrorr   r'   )rc   r|   r   r   r   r=   r=   r>   test_stdlib_bad_getattributef   s   z'TestEnumV3.test_stdlib_bad_getattributez+__qualname__ requires python 3.5 or greaterc                 C   s6   t dddd}|t d< t| j|j t| j| d S )NTheoryzrule law suppositionspanish_inquisition)qualname)r   globalstest_pickle_dump_loadrm   rule)rc   r   r=   r=   r>   'test_pickle_enum_function_with_qualname{   s   
z2TestEnumV3.test_pickle_enum_function_with_qualnamec                 C   s>   G dd dt dd}| t|jjdd | |jjd d S )Nc                   @   s8   e Zd ZdZdZdZdZdZdZdZ	dZ
ed	d
 ZdS )z)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                 S   s   d}|| j  | j| j  S )NgyдW=)massradius)rc   Gr=   r=   r>   surface_gravity   s   z9TestEnumV3.test_auto_init.<locals>.Planet.surface_gravityN)r6   r7   r8   MERCURYVENUSEARTHMARSJUPITERSATURNURANUSNEPTUNEpropertyr   r=   r=   r=   r>   Planet   s    r   zmass radiusinitr3   g#@r   )r   assertEqualroundr   r   value)rc   r   r=   r=   r>   test_auto_init   s   zTestEnumV3.test_auto_initc                 C   sx   G dd dt dd}| |jjd | |jjd | |jjd | |jjd | |jjd	 | |jjd
 d S )Nc                   @      e Zd ZdZdZdZdS )z3TestEnumV3.test_auto_init_with_value.<locals>.Color)r   r   r(   r(   )r3   r(   r   r(   )r4   r(   r(   r   N)r6   r7   r8   REDBLUEGREENr=   r=   r=   r>   Color       r   z
value, rgbr   r   r3   r4   r   r   r   )r   r   r   r   r   r   rgbrc   r   r=   r=   r>   test_auto_init_with_value   s   z$TestEnumV3.test_auto_init_with_valuec                 C   s   |  t G dd dttd}W d    n1 sw   Y  |  t G dd dttd}W d    d S 1 s:w   Y  d S )Nc                   @   $   e Zd Ze e e dd Ze dS )-TestEnumV3.test_auto_turns_off.<locals>.Colorc                 S   s   t d| j  d S )NzHello!  My serial is %s.)printr   rc   r=   r=   r>   hello   s   z3TestEnumV3.test_auto_turns_off.<locals>.Color.helloN)r6   r7   r8   redgreenbluer   roser=   r=   r=   r>   r          r   settingsc                   @   r   )r   c                 W   s   d S rr   r=   )rc   argsr=   r=   r>   __init__      z6TestEnumV3.test_auto_turns_off.<locals>.Color.__init__N)r6   r7   r8   r   r   r   r   r   r=   r=   r=   r>   r      r   )assertRaises	NameErrorr   r   r   r=   r=   r>   test_auto_turns_off   s   "zTestEnumV3.test_auto_turns_offc                 C   sD   G dd dt td}| t||j|j|jg | |jjd d S )Nc                   @      e Zd Zeeef dS )z$TestEnumV3.test_magic.<locals>.ColorNr6   r7   r8   r   r   r   r=   r=   r=   r>   r          r   r   r   r   r   r   listr   r   r   r   r   r=   r=   r>   
test_magic   s   zTestEnumV3.test_magicc                 C   B   |  td G dd dt}W d    d S 1 sw   Y  d S )Nzobject is not callablec                   @   s    e Zd ZdZeZedd ZdS )z4TestEnumV3.test_ignore_not_overridden.<locals>.Color
irreleventc                 S   s   t d| j  d S )Nz
I am light)r   rw   lowerr   r=   r=   r>   shade   s   z:TestEnumV3.test_ignore_not_overridden.<locals>.Color.shadeN)r6   r7   r8   _ignore_r   
_settings_r   r   r=   r=   r=   r>   r      s
    r   r   	TypeErrorr   r   r=   r=   r>   test_ignore_not_overridden      "z%TestEnumV3.test_ignore_not_overriddenc                 C   sF   G dd dt tdd}| t||j|j|jg | |jjd d S )Nc                   @   r   )z*TestEnumV3.test_magic_start.<locals>.ColorNr   r=   r=   r=   r>   r      r   r   r(   r   startr   r   r=   r=   r>   test_magic_start   s   zTestEnumV3.test_magic_startc                 C   s&   | j }| tt|tg d d S )N)rz   __doc____members__r7   r9   r:   r;   r<   __init_subclass__r6   __getitem____len____contains____iter__r8   )r?   r   setdirrc   r?   r=   r=   r>   test_dir_on_class   s
   

zTestEnumV3.test_dir_on_classc                 C   s(   | j }| tt|jtg d d S )N)rz   r   __eq____hash__r7   rw   r   values)r?   r   r   r   r<   r   r=   r=   r>   test_dir_on_item   s
   
zTestEnumV3.test_dir_on_itemc                 C   sN   G dd dt }| tt|tg d | tt|jtg d d S )Nc                   @   s   e Zd ZdZdZdd ZdS )z5TestEnumV3.test_dir_with_added_behavior.<locals>.Testthatthosec                 S   s
   d| j  S )NzWowser! I'm %s!rw   r   r=   r=   r>   wowser      
z<TestEnumV3.test_dir_with_added_behavior.<locals>.Test.wowserN)r6   r7   r8   thistheser   r=   r=   r=   r>   Test   rE   r   )rz   r   r   r7   r   r   r   r6   r   r   r   r   r8   )	rz   r   r   r   r7   rw   r   r   r   )r   r   r   r   r   )rc   r   r=   r=   r>   test_dir_with_added_behavior   s   


z'TestEnumV3.test_dir_with_added_behaviorc                 C   sB   G dd dt }G dd d|}| tt|jtg d d S )Nc                   @      e Zd Zdd ZdS )zDTestEnumV3.test_dir_on_sub_with_behavior_on_super.<locals>.SuperEnumc                 S      dS )Nzdid you see me?r=   r   r=   r=   r>   	invisible   r   zNTestEnumV3.test_dir_on_sub_with_behavior_on_super.<locals>.SuperEnum.invisibleN)r6   r7   r8   r   r=   r=   r=   r>   	SuperEnum       r   c                   @   re   )zBTestEnumV3.test_dir_on_sub_with_behavior_on_super.<locals>.SubEnumrG   N)r6   r7   r8   sampler=   r=   r=   r>   SubEnum   ri   r   )	rz   r   r   r   r7   rw   r   r   r   )r   r   r   r   r   )rc   r   r   r=   r=   r>   &test_dir_on_sub_with_behavior_on_super   s   
z1TestEnumV3.test_dir_on_sub_with_behavior_on_superc                 C   s(   G dd dt }| t|jtu  d S )Nc                   @   r   )zATestEnumV3.test_members_are_always_ordered.<locals>.AlwaysOrderedr   r3   r4   N)r6   r7   r8   firstsecondthirdr=   r=   r=   r>   AlwaysOrdered   r   r   )r   rm   typer   r)   )rc   r   r=   r=   r>   test_members_are_always_ordered   s   z*TestEnumV3.test_members_are_always_orderedc                    sj   fdd}| j | jd | t| G dd dt | j j  fdd}| t| d S )Nc                      s    j dk d S )Nr5   )r9   r=   )r?   r=   r>   bad_compare   s   z0TestEnumV3.test_comparisons.<locals>.bad_comparer   c                   @   r   )z)TestEnumV3.test_comparisons.<locals>.Partr   r3   r4   N)r6   r7   r8   r9   CLIPBARRELr=   r=   r=   r>   Part  r   r  c                      s   j  jk  d S rr   )r9   r   r=   r  r?   r=   r>   r   
  s   )r?   assertNotEqualr9   r   r   r   )rc   r   r=   r  r>   test_comparisons   s   zTestEnumV3.test_comparisonsc                 C   s   |  t G dd dt}W d    n1 sw   Y  |  t G dd dt}W d    n1 s5w   Y  |  t G dd dt}W d    d S 1 sSw   Y  d S )Nc                   @   s   e Zd ZdZdZdZdZdS )z.TestEnumV3.test_duplicate_name.<locals>.Color1r   r3   r4   r5   Nr   r=   r=   r=   r>   Color1  r@   r  c                   @   s    e Zd ZdZdZdZdd ZdS )z.TestEnumV3.test_duplicate_name.<locals>.Color2r   r3   r4   c                 S   r   )Nr   r=   r   r=   r=   r>   r     r   z2TestEnumV3.test_duplicate_name.<locals>.Color2.redNr   r=   r=   r=   r>   Color2  s
    r  c                   @   s$   e Zd Zedd ZdZdZdZdS )z.TestEnumV3.test_duplicate_name.<locals>.Color3c                 S   r   )Nredderr=   r   r=   r=   r>   r      s   z2TestEnumV3.test_duplicate_name.<locals>.Color3.redr   r3   r4   N)r6   r7   r8   r   r   r   r   r=   r=   r=   r>   Color3  s    
r  )r   r   r   )rc   r  r  r  r=   r=   r>   test_duplicate_name  s   "zTestEnumV3.test_duplicate_namec                 C   D   |  t G dd dttd}W d    d S 1 sw   Y  d S )Nc                   @      e Zd ZdZdZdZdZdS )z:TestEnumV3.test_duplicate_value_with_unique.<locals>.Colorr   r3   r4   Nr6   r7   r8   r   r   r   rojor=   r=   r=   r>   r   )  r@   r   r   )r   
ValueErrorr   r   r   r=   r=   r>    test_duplicate_value_with_unique'     "z+TestEnumV3.test_duplicate_value_with_uniquec                 C   sz   G dd dt td}| |j|ju  | |jjd | |jjd | t|d | t||j|j	|j
|jg d S )Nc                   @   r  )z;TestEnumV3.test_duplicate_value_with_noalias.<locals>.Colorr   r3   r4   Nr  r=   r=   r=   r>   r   0  r@   r   r   r   r5   )r   r   rp   r   r  r   r   lenr   r   r   r   r=   r=   r>   !test_duplicate_value_with_noalias/  s   $z,TestEnumV3.test_duplicate_value_with_noaliasc                 C   s&   G dd dt td}| t|d d S )Nc                   @   r  )z3TestEnumV3.test_noalias_value_lookup.<locals>.Colorr   r3   r4   Nr  r=   r=   r=   r>   r   <  r@   r   r   r3   )r   r   r   r   r   r=   r=   r>   test_noalias_value_lookup;  s   z$TestEnumV3.test_noalias_value_lookupc                 C   sJ   G dd dt td}| |jjd | |d|j | |jjd d S )Nc                   @   r   )z)TestEnumV3.test_multivalue.<locals>.Colorr   r   r3   r   r4   r   Nr   r=   r=   r=   r>   r   D  r   r   r   r   r   r  )	r   r   r   r   r   assertIsr   r   r   r   r=   r=   r>   test_multivalueC  s   zTestEnumV3.test_multivaluec                 C   r
  )Nc                   @   r   )z?TestEnumV3.test_multivalue_with_duplicate_values.<locals>.Colorr  r  r4   r   r   Nr   r=   r=   r=   r>   r   N  r   r   r   )r   r  r   r   r   r=   r=   r>   %test_multivalue_with_duplicate_valuesL  r  z0TestEnumV3.test_multivalue_with_duplicate_valuesc                 C   sH   |  t G dd dtttfd}W d    d S 1 sw   Y  d S )Nc                   @   r   )zKTestEnumV3.test_multivalue_with_duplicate_values_and_noalias.<locals>.Colorr  r  r  Nr   r=   r=   r=   r>   r   U  r   r   r   )r   r   r   r   r   r   r=   r=   r>   1test_multivalue_with_duplicate_values_and_noaliasS  s   "z<TestEnumV3.test_multivalue_with_duplicate_values_and_noaliasc                 C   sJ   |  td G dd dtttfd}W d    d S 1 sw   Y  d S )Nz0MultiValue and MagicValue are mutually exclusivec                   @   s   e Zd Ze dZe dS )z2TestEnumV3.test_multivalue_and_auto.<locals>.Color)r4   r   Nr   r=   r=   r=   r>   r   \  r   r   r   )r   r   r   r   r   r   r=   r=   r>   test_multivalue_and_autoZ  s   "z#TestEnumV3.test_multivalue_and_autoc                 C   sf   G dd dt tdd}| |jd | |jd | |jjd | |jjd | t|d	 d S )
Nc                   @   rY   )z2TestEnumV3.test_autonumber_and_init.<locals>.FieldChar, Date, Logical, etc.Field offset in recordNr6   r7   r8   TYPESTARTr=   r=   r=   r>   Fieldb  r_   r"  r   r   r   r   r3   r  r  _order_)r   r   r   r   r!  r   rp   hasattrrc   r"  r=   r=   r>   test_autonumber_and_inita  s   z#TestEnumV3.test_autonumber_and_initc                 C   s6   G dd dt dd}| |jd | |jjd d S )Nc                   @   rY   )z1TestEnumV3.test_autovalue_and_init.<locals>.Fieldr  r  Nr  r=   r=   r=   r>   r"  l  r_   r"  value __doc__r   r   r  )r   r   r   r!  r   r&  r=   r=   r>   test_autovalue_and_initk  s   z"TestEnumV3.test_autovalue_and_initc                 C   sX   G dd dt dtdd}| |jd | |jd | |jjd | |jjd d S )	Nc                   @   rY   )z3TestEnumV3.test_autonumber_and_start.<locals>.Fieldr  r  Nr  r=   r=   r=   r>   r"  s  r_   r"  r   r(   )r   r   r   r   r  r  )r   r   r   r   r!  r   r&  r=   r=   r>   test_autonumber_and_startr  s
   z$TestEnumV3.test_autonumber_and_startc                 C   s   G dd dt dd}| |jd | |jd | |jd | |jd | |jjd	 | |jjd
 | |jjd | |jjd d S )Nc                   @   r2   )zBTestEnumV3.test_autonumber_and_init_and_some_values.<locals>.Fieldr  r  )rG   	test blah
test belchN)r6   r7   r8   r   r!  BLAHBELCHr=   r=   r=   r>   r"  |  r@   r"  r(  r   r   r3   rG      r  r  r+  r,  )r   r   r   r!  r-  r.  r   r&  r=   r=   r>   (test_autonumber_and_init_and_some_values{  s   z3TestEnumV3.test_autonumber_and_init_and_some_valuesc                 C   s   G dd dt dd}| |jjd | |jjd | |jjd | |jjd | |jjd	 | |jjd
 | td G dd dt dd}W d    n1 sUw   Y  G dd dt dd}| 	|j
jd | |jjd | 	|jjd d S )Nc                   @   rY   )?TestEnumV3.test_autonumber_with_irregular_values.<locals>.Point   	   )      Nr6   r7   r8   r   r   r=   r=   r=   r>   Point  r_   r8  zx yr   r   r3  r4  r3   r5  r6  zI.*number of fields provided do not match init ...x., .y.. != .3, 11, 13..c                   @   rY   )r1  r2  )r4   r5  r6  Nr7  r=   r=   r=   r>   r8    r_   c                   @   s   e Zd ZdZdZdZdS )z?TestEnumV3.test_autonumber_with_irregular_values.<locals>.Colorr=   r   Nr   r=   r=   r=   r>   r     s    r   r   r   )r   r   r   r   xyr   r   r   rm   r   r   r   r   )rc   r8  r   r=   r=   r>   %test_autonumber_with_irregular_values  s   z0TestEnumV3.test_autonumber_with_irregular_valuesc                 C   @   |  t G dd dt}W d    d S 1 sw   Y  d S )Nc                   @   s.   e Zd ZdZdZdZdZedefddZ	dS )z6TestEnumV3.test_autonumber_and_property.<locals>.Colorr=   returnc                 S   
   | j  S rr   rw   titler   r=   r=   r>   cap_name     
z?TestEnumV3.test_autonumber_and_property.<locals>.Color.cap_nameN
r6   r7   r8   r   r   r   r   r   ra   rA  r=   r=   r=   r>   r         r   r   r   r	   r   r=   r=   r>   test_autonumber_and_property     "z'TestEnumV3.test_autonumber_and_propertyc                 C   sd   G dd dt }| t||j|j|jg | dd |D g d | dd |D g d d S )Nc                   @      e Zd Ze e e dS )z'TestEnumV3.test_autoenum.<locals>.ColorNr   r=   r=   r=   r>   r     r   r   c                 S      g | ]}|j qS r=   r   .0mr=   r=   r>   
<listcomp>      z,TestEnumV3.test_autoenum.<locals>.<listcomp>)r   r3   r4   c                 S   rI  r=   r   rK  r=   r=   r>   rN    rO  r   r   r   r	   r   r   r   r   r   r   r=   r=   r>   test_autoenum  s   zTestEnumV3.test_autoenumc                 C   sd   G dd dt }| t||j|j|jg | dd |D g d | dd |D g d d S )Nc                   @       e Zd Zdd Ze e e dS )z0TestEnumV3.test_autoenum_with_str.<locals>.Colorc                 S      | S rr   r=   )rw   r   countlast_valuesr=   r=   r>   _generate_next_value_  r   zFTestEnumV3.test_autoenum_with_str.<locals>.Color._generate_next_value_N)r6   r7   r8   rW  r   r   r   r=   r=   r=   r>   r     
    r   c                 S   rI  r=   rJ  rK  r=   r=   r>   rN    rO  z5TestEnumV3.test_autoenum_with_str.<locals>.<listcomp>rP  c                 S   rI  r=   r   rK  r=   r=   r>   rN    rO  rQ  r   r=   r=   r>   test_autoenum_with_str  s   z!TestEnumV3.test_autoenum_with_strc                 C   $   G dd dt }| |jjd d S )Nc                   @   s$   e Zd Ze e e edd ZdS )z:TestEnumV3.test_autoenum_and_default_ignore.<locals>.Colorc                 S   r>  rr   r?  r   r=   r=   r>   rA    rB  zCTestEnumV3.test_autoenum_and_default_ignore.<locals>.Color.cap_nameN)r6   r7   r8   r   r   r   r   rA  r=   r=   r=   r>   r         r   Bluer	   r   r   rA  r   r=   r=   r>    test_autoenum_and_default_ignore  s   z+TestEnumV3.test_autoenum_and_default_ignorec                 C   r<  )Nc                   @   s.   e Zd ZdZe e e edefddZ	dS )z?TestEnumV3.test_autonumber_and_overridden_ignore.<locals>.Colorstaticmethodr=  c                 S   r>  rr   r?  r   r=   r=   r>   rA    rB  zHTestEnumV3.test_autonumber_and_overridden_ignore.<locals>.Color.cap_nameNrC  r=   r=   r=   r>   r     rD  r   rE  r   r=   r=   r>   %test_autonumber_and_overridden_ignore  rG  z0TestEnumV3.test_autonumber_and_overridden_ignorec                 C   rZ  )Nc                   @   s.   e Zd ZdZe e eZede	fddZ
dS )zATestEnumV3.test_autonumber_and_multiple_assignment.<locals>.Colorr   r=  c                 S   r>  rr   r?  r   r=   r=   r>   rA    rB  zJTestEnumV3.test_autonumber_and_multiple_assignment.<locals>.Color.cap_nameN)r6   r7   r8   r   r   r   cyanr   r   ra   rA  r=   r=   r=   r>   r     rD  r   Cyanr]  r   r=   r=   r>   'test_autonumber_and_multiple_assignment  s   z2TestEnumV3.test_autonumber_and_multiple_assignmentc                 C   s`   G dd dt tttfdd}|}| |jd | |j|d  u o*|du  d S    d S )Nc                   @   r   )zHTestEnumV3.test_multivalue_and_autonumber_inherited.<locals>.Measurement201107212012091120110518Nr6   r7   r8   rg   twothreer=   r=   r=   r>   Measurement  r   rj  r(   r   rd  )intr   r   r   r   rg   rm   )rc   rj  Mr=   r=   r>   (test_multivalue_and_autonumber_inherited  s   2z3TestEnumV3.test_multivalue_and_autonumber_inheritedc                 C   sX   G dd dt td}| t G dd d|td}W d    d S 1 s%w   Y  d S )Nc                   @   r}   )zDTestEnumV3.test_combine_new_settings_with_old_settings.<locals>.AutoNr~   r=   r=   r=   r>   Auto  r   rn  r   c                   @   s   e Zd Ze e dZdS )zJTestEnumV3.test_combine_new_settings_with_old_settings.<locals>.AutoUniquer   N)r6   r7   r8   r-  BLUHICKr=   r=   r=   r>   
AutoUnique  r   rq  )r   r   r   r  r   )rc   rn  rq  r=   r=   r>   +test_combine_new_settings_with_old_settings  s   "z6TestEnumV3.test_combine_new_settings_with_old_settingsc                 C   sX   G dd dt t}| t|d | t|d | t|d | t|jt  d S )Nc                   @   s   e Zd ZdZdZeZdZe Z	e
dD ]
Zedfe	de < qe
dD ]Zed d	fe	d
e < q"e
dD ]Zed dfe	de < q3eZeZdS )z)TestEnumV3.test_timedelta.<locals>.Periodz3
            different lengths of time
            zvalue periodzPeriod i   dayzday_%dr[   r3  weekzweek_%d      monthzmonth_%dN)r6   r7   r8   r   _init_r   r   r   varsPeriodrangeiday_1OneDayweek_1OneWeekr=   r=   r=   r>   r{    s    r{  r   r}  )r*   r   rp   r%  rm   ro   r~  )rc   r{  r=   r=   r>   test_timedelta  s
   zTestEnumV3.test_timedeltac                 C   s`   G dd dt }t|dd | |jjd | |jjd | |j|v  | t|d d S )Nc                   @   r   )z0TestEnumV3.test_extend_enum_plain.<locals>.Colorr   r3   r4   Nr   r=   r=   r=   r>   r   	  r   r   brownr5   )r   r   r   r  rw   r   rm   r  r   r=   r=   r>   test_extend_enum_plain  s   z!TestEnumV3.test_extend_enum_plainc                 C   sp   G dd dt }t|dd | |jjd | |jjd | |j|v  | t|d | |jjd d S )Nc                   @   r   )z1TestEnumV3.test_extend_enum_shadow.<locals>.Colorr   r3   r4   Nr   r=   r=   r=   r>   r     r   r   r   r5   r   )r   r   r   r   rw   rm   r  r   r   r=   r=   r>   test_extend_enum_shadow  s   z"TestEnumV3.test_extend_enum_shadowc                 C   sN   G dd dt }t|d | |jjd | |jjd | |jjd d S )Nc                   @   s   e Zd Zdd Ze e dS )z1TestEnumV3.test_extend_enum_generate.<locals>.Fooc                 _   rT  rr   r=   )rw   r   rU  r   r   kwdsr=   r=   r>   rW  !  r   zGTestEnumV3.test_extend_enum_generate.<locals>.Foo._generate_next_value_N)r6   r7   r8   rW  abr=   r=   r=   r>   Foo   s    r  cr  r  )r	   r   r   r  r   r  r  )rc   r  r=   r=   r>   test_extend_enum_generate  s
   
z$TestEnumV3.test_extend_enum_generatec                 C   P   |  t G dd dttd}t|dd W d    d S 1 s!w   Y  d S )Nc                   @   r   )z@TestEnumV3.test_extend_enum_unique_with_duplicate.<locals>.Colorr   r3   r4   Nr   r=   r=   r=   r>   r   -  r   r   r   r   r   )r   r  r   r   r   r   r=   r=   r>   &test_extend_enum_unique_with_duplicate+     "z1TestEnumV3.test_extend_enum_unique_with_duplicatec                 C   r  )Nc                   @   r   )zDTestEnumV3.test_extend_enum_multivalue_with_duplicate.<locals>.Color)r   r  )r3   verde)r4   azulNr   r=   r=   r=   r>   r   5  r   r   r   r   r3   )r   r  r   r   r   r   r=   r=   r>   *test_extend_enum_multivalue_with_duplicate3  r  z5TestEnumV3.test_extend_enum_multivalue_with_duplicatec                 C   sT   G dd dt td}t|dd | t|d | |j|ju  | |jjd d S )Nc                   @   r   )zATestEnumV3.test_extend_enum_noalias_with_duplicate.<locals>.Colorr   r3   r4   Nr   r=   r=   r=   r>   r   <  r   r   r   r   r4   )	r   r   r   r   r   rp   r   r   rm   r   r=   r=   r>   'test_extend_enum_noalias_with_duplicate;  s
   z2TestEnumV3.test_extend_enum_noalias_with_duplicatec                 C   s   dd }|  t| d S )Nc                  S   s$   G dd dt } G dd dt } d S )Nc                   @   r   zDTestEnumV3.test_no_duplicates.<locals>.bad_duplicates.<locals>.Colorr   r3   r4   Nr   r=   r=   r=   r>   r   G  r   r   c                   @   s   e Zd ZdZdZdZdZdS r  )r6   r7   r8   r   r   r   grener=   r=   r=   r>   r   K  r@   )r   r   r=   r=   r>   bad_duplicatesF     z5TestEnumV3.test_no_duplicates.<locals>.bad_duplicates)r   r  )rc   r  r=   r=   r>   test_no_duplicatesE  s   
zTestEnumV3.test_no_duplicatesc                 C   s&   G dd dt }G dd dtt }d S )Nc                   @   r   )z2TestEnumV3.test_no_duplicates_kinda.<locals>.Sillyr   dosr4   N)r6   r7   r8   rg   rh  rw   r=   r=   r=   r>   SillyS  r   r  c                   @   r2   )z4TestEnumV3.test_no_duplicates_kinda.<locals>.Sillierr   r3   r4   r5   N)r6   r7   r8   singlerw   tripler   r=   r=   r=   r>   SillierW  r@   r  )r   r   )rc   r  r  r=   r=   r>   test_no_duplicates_kindaR  s   z#TestEnumV3.test_no_duplicates_kindac                 C   d   G dd dt td}| t||j|j|jg | |jjd | |jjd | |jjd d S )Nc                   @   rH  )z*TestEnumV3.test_auto_number.<locals>.ColorNr6   r7   r8   r   r   r   r=   r=   r=   r>   r   ^  r   r   r   r   r3   r4   r   r   r   r   r   r   r   r   r   r=   r=   r>   test_auto_number]  
   zTestEnumV3.test_auto_numberc                 C   r  )Nc                   @   rS  )z(TestEnumV3.test_auto_name.<locals>.Colorc                 S   rT  rr   r=   rw   r   rU  lastr=   r=   r>   rW  j  r   z>TestEnumV3.test_auto_name.<locals>.Color._generate_next_value_N)r6   r7   r8   rW  r   r   r   r=   r=   r=   r>   r   i  rX  r   r   r   r   r   r  r   r=   r=   r>   test_auto_nameh  s
   zTestEnumV3.test_auto_namec                 C   st   G dd dt }G dd d|td}| t||j|j|jg | |jjd | |jjd | |jjd d S )	Nc                   @   r   )z7TestEnumV3.test_auto_name_inherit.<locals>.AutoNameEnumc                 S   rT  rr   r=   r  r=   r=   r>   rW  w  r   zMTestEnumV3.test_auto_name_inherit.<locals>.AutoNameEnum._generate_next_value_N)r6   r7   r8   rW  r=   r=   r=   r>   AutoNameEnumv  r   r  c                   @   rH  )z0TestEnumV3.test_auto_name_inherit.<locals>.ColorNr  r=   r=   r=   r>   r   y  r   r   r   r   r   r   r  )rc   r  r   r=   r=   r>   test_auto_name_inheritu  s   z!TestEnumV3.test_auto_name_inheritc                 C   rZ  )Nc                   @   s   e Zd ZeZdZe dS )z+TestEnumV3.test_auto_garbage.<locals>.Colorr   N)r6   r7   r8   r   r   r   r   r=   r=   r=   r>   r     r   r   r   )r   r   r   r   r   r=   r=   r>   test_auto_garbage  r  zTestEnumV3.test_auto_garbagec                 C   r  )Nc                   @   s   e Zd ZdZdZe dS )z5TestEnumV3.test_auto_garbage_corrected.<locals>.Colorr   r3   Nr  r=   r=   r=   r>   r     r   r   r   r   r3   r4   r  r   r=   r=   r>   test_auto_garbage_corrected  r  z&TestEnumV3.test_auto_garbage_correctedc                 C   s4   G dd dt td}| |j|j|jgt| d S )Nc                   @   s   e Zd ZeZe e dS )z-TestEnumV3.test_duplicate_auto.<locals>.DupesN)r6   r7   r8   primeror   r   r   r=   r=   r=   r>   Dupes  r   r  r   )r   r   r   r   r   r   r   )rc   r  r=   r=   r>   test_duplicate_auto  s    zTestEnumV3.test_duplicate_autoc                 C   s\  G dd dt }t|D ]\}}| ||j q|}| |jjd | |jjd | |jjd | |jjd | |jjd | |jjd | |jjd	 | |jjd
 | |jjd | |j	jd | |j	jd | |j	jd | |j
jd | |j
jd | |j
jd | |jjd | |jjd | |jjd | |jjd | |jjd | |jjd | |jjd | |jjd | |jjd | |jjd | |jjd | |jjd | |jjd | |jjd | |jjd  | |jjd! | |jjd" | |jjd# G d$d dt }t|D ]\}}| ||jd  q.|}| |jjd | |jjd% | |jjd | |jjd& | |jjd	 | |jjd' | |j	jd | |j	jd( | |j
jd | |j
jd) | |jjd | |jjd* | |jjd | |jjd+ | |jjd | |jjd, | |jjd | |jjd- | |jjd | |jjd. | |jjd! | |jjd/ | t G d0d dt }W d    n	1 sw   Y  | t G d1d dt }W d    d S 1 s'w   Y  d S )2Nc                   @   D   e Zd ZdZ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S )7TestEnumV3.test_order_as_function.<locals>.TestSequencezvalue, sequencec                 S      | j S rr   sequencememberr=   r=   r>   <lambda>      @TestEnumV3.test_order_as_function.<locals>.TestSequence.<lambda>An$(1,6)r(   An$(7,2)r   An$(9,4)r3   	Hn$(13,6)r4   	Cn$(19,3)r5   Zn$(1,1)rG   Bn(2,1)r/  Fnr3  Rn$(5,1)   Sn$(6,1)r4  Qn$(7,2)
   Nr6   r7   r8   ry  r$  item_id
company_idwarehouse_nocompanykey_type	availablecontract_itemsales_categorygl_categorywarehouse_category	inv_unitsr=   r=   r=   r>   TestSequence      r  r  r  r(   r  r  r   r  r  r3   r  r  r4   r  r  r5   r  r  rG   r  r  r/  r  r  r3  r  r  r  r  r  r4  r  r  r  c                   @   s@   e Zd Z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S )r  c                 S   s
   | j d S )Nr   rJ  r  r=   r=   r>   r    s   
 r  r  r  r  r  r  r  r  r  r  r  r  N)r6   r7   r8   r$  r  r  r  r  r  r  r  r  r  r  r  r=   r=   r=   r>   r    s    r  r  r  r  r  r  r  r  r  r  r  c                   @   r  )r  r  c                 S   r  rr   r  r  r=   r=   r>   r    r  r  r  r  r  r  r  r  r  r  r  r  r  Nr  r=   r=   r=   r>   r    r  c                   @   r  )r  r  c                 S   r  rr   r  r  r=   r=   r>   r    r  r  r  r  r  r  r  r  r  r  r  r  r  N)r6   r7   r8   ry  r$  r  r  r  r  r  r  r  r  r  r  r  r=   r=   r=   r>   r  	  r  )r   	enumerater   r  r  rw   r   r  r  r  r  r  r  r  r  r  r  r   r   )rc   r  r}  r  tsr=   r=   r>   test_order_as_function  s   $z!TestEnumV3.test_order_as_functionc                 C   sT   G dd dt }| |d|j | td|d | td|d | t|d d S )	Nc                   @   s$   e Zd ZdZdZdZedd ZdS )z&TestEnumV3.test_missing.<locals>.Colorr   r3   r4   c                 S   s*   |dkr| j S |dkrdS |dkrtd S )Nri  
bad returnrG   	error out)r   ZeroDivisionError)rv   itemr=   r=   r>   	_missing_  s   z0TestEnumV3.test_missing.<locals>.Color._missing_N)r6   r7   r8   r   r   r   classmethodr  r=   r=   r=   r>   r     r[  r   ri  z7 is not a valid Colorr3  zerror in .*_missing_r  r  )r   r  r   r   r  r   r   r  r   r=   r=   r>   test_missing  s
   zTestEnumV3.test_missingc                    s   G dd dt }| |jjt | |jjt | |jjt G dd dG dd d G  fdddt }| |j	j | |j
j  G d	d
 d
G fdddt }| |jj dS )z2Support using Enum to refer to types deliberately.c                   @   s   e Zd ZeZeZeZdS )z.TestEnumV3.test_enum_of_types.<locals>.MyTypesN)	r6   r7   r8   rk  r}  r`   fra   sr=   r=   r=   r>   MyTypes1  r   r  c                   @   r}   )z*TestEnumV3.test_enum_of_types.<locals>.FooNr~   r=   r=   r=   r>   r  8  r   r  c                   @   r}   )z*TestEnumV3.test_enum_of_types.<locals>.BarNr~   r=   r=   r=   r>   Bar:  r   r  c                       s   e Zd ZZ ZdS )z/TestEnumV3.test_enum_of_types.<locals>.MyTypes2N)r6   r7   r8   r  r  r=   )r  r  r=   r>   MyTypes2<  r_   r  c                   @   r}   )z7TestEnumV3.test_enum_of_types.<locals>.SpamEnumNotInnerNr~   r=   r=   r=   r>   SpamEnumNotInnerA  r   r  c                       s   e Zd Z ZdS )z/TestEnumV3.test_enum_of_types.<locals>.SpamEnumN)r6   r7   r8   spamr=   )r  r=   r>   SpamEnumC  ri   r  N)r   r   r}  r   rk  r  r`   r  ra   r  r  r  )rc   r  r  r  r=   )r  r  r  r>   test_enum_of_types/  s   zTestEnumV3.test_enum_of_typesc                 C   s~   G dd dt }| t|jt | |jjd | |jjjd | t	|j|jj|jj
g | t	||j|jg dS )z'Support locally-defined nested classes.c                   @   s(   e Zd ZdZdZdZG dd deZdS )zKTestEnumV3.test_nested_classes_in_enum_do_not_create_members.<locals>.OuterOuterr   r3   c                   @      e Zd ZdZdZdZdS )zQTestEnumV3.test_nested_classes_in_enum_do_not_create_members.<locals>.Outer.InnerzOuter.Innerr  r5  N)r6   r7   r8   foor   r=   r=   r=   r>   InnerN  r   r  N)r6   r7   r8   r  r  r   r  r=   r=   r=   r>   r  J  s
    r  r   r  N)r   rm   ro   r  r   r   r  r   r  r   r   r  )rc   r  r=   r=   r>   1test_nested_classes_in_enum_do_not_create_membersG  s   
z<TestEnumV3.test_nested_classes_in_enum_do_not_create_membersc                 C   sZ   G dd dt }|| j_d| jj | j_t| jt| jjdd t	| j
| jjdtfd d S )Nc                   @   rY   zNTestEnumV3.test_class_nested_enum_and_pickle_protocol_four.<locals>.NestedEnumcommonrareNr6   r7   r8   twigsshinyr=   r=   r=   r>   
NestedEnuma  r_   r  %s.NestedEnum)r(   r4   protocolr5   )r   rz   r  r6   r8   test_pickle_exceptionr   r-   r  r   rm   r.   rc   r  r=   r=   r>   /test_class_nested_enum_and_pickle_protocol_four_  s   
z:TestEnumV3.test_class_nested_enum_and_pickle_protocol_fourc                 C   sD   G dd dt }|| j_d| jj | j_t| j| jjdtfd d S )Nc                   @   rY   r  r  r=   r=   r=   r>   r  p  r_   r  r  r(   r  )	r   rz   r  r6   r8   r   rm   r  r.   r  r=   r=   r>   r  n  s   
c                    sP   G  fdddt  |  j jgt  |  jjd |  jjd d S )Nc                       s,   e Zd ZdZ ddZ ddZdd ZdS )	z-TestEnumV3.test_enum_injection.<locals>.ColorzBLACK WHITEblackz#000white#fffc                 S   s   || _ || _d S rr   )labelhex)rc   r  r  r=   r=   r>   r     s   
z6TestEnumV3.test_enum_injection.<locals>.Color.__init__N)r6   r7   r8   r$  BLACKWHITEr   r=   r  r=   r>   r   {  s
    

r   r  r  )r   r   r  r	  r   r  r  r   r=   r  r>   test_enum_injectionz  s   	zTestEnumV3.test_enum_injectionc                    s   G  fdddt  G dd d t}| |jtj | t|j|j d  t d< |t d<  dd}| |d t	| j|ddt
fd	 | |jjd
 t	| j|jdt
fd	 d S )Nc                       sH   e Zd ZdZdd Zdd Zedd Z dd	 Zd
d Z fddZdS )z?TestEnumV3.test_subclasses_with_getnewargs_ex.<locals>.NamedIntNamedIntc                 W   sP   |}t |dk rtd|d |dd  }}tj| g|R  }||_||_|S )Nr3   z name and value must be specifiedr(   r   )r  r   rk  __new___intname_args)rv   r   r  rw   rc   r=   r=   r>   r    s   zGTestEnumV3.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__new__c                 S   s
   | j i fS rr   )r  r   r=   r=   r>   __getnewargs_ex__  r   zQTestEnumV3.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__getnewargs_ex__c                 S   r  rr   )r  r   r=   r=   r>   r6        zHTestEnumV3.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__name__c                 S   s   d t| j| jt| S )Nz{}({!r}, {}))formatr   r6   rk  __repr__r   r=   r=   r>   r    s   zHTestEnumV3.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__repr__c                 S   s&   t }|j}|jtu r|| S || S rr   )rk  __str____objclass__objectr  )rc   basebase_strr=   r=   r>   r    s
   

zGTestEnumV3.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__str__c                    s>   t | t | }t|  rt| r d| j|j|S |S )Nz({0} + {1}))rk  ro   r  r6   )rc   othertempr  r=   r>   __add__  s   zGTestEnumV3.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__add__N)	r6   r7   r8   r  r  r   r  r  r  r=   r  r=   r>   r    s    	
	r  c                   @   r  )z:TestEnumV3.test_subclasses_with_getnewargs_ex.<locals>.NEINEI)zthe-xr   )zthe-yr3   N)r6   r7   r8   r9  r:  r=   r=   r=   r>   r    r   r  zNamedInt('(the-x + the-y)', 3)testrG   r5   r  r3   )rk  r   r  r  r   reprr9  r:  r   r   r.   r   rm   )rc   r  NI5r=   r  r>   "test_subclasses_with_getnewargs_ex  s   '


z-TestEnumV3.test_subclasses_with_getnewargs_exc                 C   s:   G dd dt d}G dd d|t}| t|jd d S )Nc                   @   r}   )zCTestEnumV3.test_multiple_superclasses_repr.<locals>._EnumSuperClassNr~   r=   r=   r=   r>   _EnumSuperClass  r   r!  r   c                   @   re   )z5TestEnumV3.test_multiple_superclasses_repr.<locals>.Er   N)r6   r7   r8   rH   r=   r=   r=   r>   rA     ri   rA   z<E.A: 1>)r   r   r   r  rH   )rc   r!  rA   r=   r=   r>   test_multiple_superclasses_repr  s   z*TestEnumV3.test_multiple_superclasses_reprN)Fr6   r7   r8   rd   unittest
skipUnlessr   rq   r   r   r"   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r  r  r  r  r'  r)  r*  r0  r;  rF  rR  rY  r^  r`  rc  rm  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r    r  r  r  r!   r  r
  r   r"  r=   r=   r=   r>   r1      s    
#

"

	
	
		
		
|



8r1   c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )TestOrderV3z5
    Test definition order versus _order_ order.
    c                 C      G dd dt }d S )Nc                   @   r2   )z,TestOrderV3.test_same_members.<locals>.Colorred green bluer   r3   r4   Nr6   r7   r8   r$  r   r   r   r=   r=   r=   r>   r     r@   r   r   r   r=   r=   r>   test_same_members     zTestOrderV3.test_same_membersc                 C   r&  )Nc                   @       e Zd ZdZdZdZdZeZdS )z9TestOrderV3.test_same_members_with_aliases.<locals>.Colorr'  r   r3   r4   Nr6   r7   r8   r$  r   r   r   r  r=   r=   r=   r>   r     rN   r   r)  r   r=   r=   r>   test_same_members_with_aliases  r+  z*TestOrderV3.test_same_members_with_aliasesc                 C   r   )N#member order does not match _order_c                   @   r2   )z8TestOrderV3.test_same_members_wrong_order.<locals>.Colorr'  r   r4   r3   Nr6   r7   r8   r$  r   r   r   r=   r=   r=   r>   r     r@   r   r   r   r   r   r=   r=   r>   test_same_members_wrong_order  r   z)TestOrderV3.test_same_members_wrong_orderc                 C   r   )Nr/  c                   @   r2   )z7TestOrderV3.test_order_has_extra_members.<locals>.Colorred green blue purpler   r3   r4   Nr(  r=   r=   r=   r>   r     r@   r   r1  r   r=   r=   r>   test_order_has_extra_members  r   z(TestOrderV3.test_order_has_extra_membersc                 C   r   )Nr/  c                   @   r,  )zDTestOrderV3.test_order_has_extra_members_with_aliases.<locals>.Colorr3  r   r3   r4   Nr-  r=   r=   r=   r>   r     rN   r   r1  r   r=   r=   r>   )test_order_has_extra_members_with_aliases  r   z5TestOrderV3.test_order_has_extra_members_with_aliasesc                 C   r   )Nr/  c                   @   rF   )z6TestOrderV3.test_enum_has_extra_members.<locals>.Colorr'  r   r3   r4   r5   Nr6   r7   r8   r$  r   r   r   purpler=   r=   r=   r>   r     rN   r   r1  r   r=   r=   r>   test_enum_has_extra_members  r   z'TestOrderV3.test_enum_has_extra_membersc                 C   r   )Nr/  c                   @   $   e Zd ZdZdZdZdZdZeZdS )zCTestOrderV3.test_enum_has_extra_members_with_aliases.<locals>.Colorr'  r   r3   r4   r5   N	r6   r7   r8   r$  r   r   r   r7  r  r=   r=   r=   r>   r          r   r1  r   r=   r=   r>   (test_enum_has_extra_members_with_aliases  r   z4TestOrderV3.test_enum_has_extra_members_with_aliasesc                 C   r&  )Nc                   @   r2   )z1TestOrderV3.test_same_members_flag.<locals>.Colorr'  r   r3   r5   Nr(  r=   r=   r=   r>   r   	  r@   r   r   r   r=   r=   r>   test_same_members_flag  r+  z"TestOrderV3.test_same_members_flagc                 C   r&  )Nc                   @   r,  )z>TestOrderV3.test_same_members_with_aliases_flag.<locals>.Colorr'  r   r3   r5   Nr-  r=   r=   r=   r>   r     rN   r   r=  r   r=   r=   r>   #test_same_members_with_aliases_flag  r+  z/TestOrderV3.test_same_members_with_aliases_flagc                 C   r   )Nr/  c                   @   r2   )z=TestOrderV3.test_same_members_wrong_order_falg.<locals>.Colorr'  r   r5   r3   Nr0  r=   r=   r=   r>   r     r@   r   r   r   r=   r=   r>   "test_same_members_wrong_order_falg  r   z.TestOrderV3.test_same_members_wrong_order_falgc                 C   r   )Nr/  c                   @   r2   )z<TestOrderV3.test_order_has_extra_members_flag.<locals>.Colorr3  r   r3   r5   Nr(  r=   r=   r=   r>   r   !  r@   r   r   r   r=   r=   r>   !test_order_has_extra_members_flag  r   z-TestOrderV3.test_order_has_extra_members_flagc                 C   r   )Nr/  c                   @   r,  )zITestOrderV3.test_order_has_extra_members_with_aliases_flag.<locals>.Colorr3  r   r3   r5   Nr-  r=   r=   r=   r>   r   )  rN   r   r   r   r=   r=   r>   .test_order_has_extra_members_with_aliases_flag'  r   z:TestOrderV3.test_order_has_extra_members_with_aliases_flagc                 C   r   )Nr/  c                   @   rF   )z;TestOrderV3.test_enum_has_extra_members_flag.<locals>.Colorr'  r   r3   r5   r  Nr6  r=   r=   r=   r>   r   2  rN   r   r   r   r=   r=   r>    test_enum_has_extra_members_flag0  r   z,TestOrderV3.test_enum_has_extra_members_flagc                 C   r   )Nr/  c                   @   r9  )zHTestOrderV3.test_enum_has_extra_members_with_aliases_flag.<locals>.Colorr'  r   r3   r5   r  Nr:  r=   r=   r=   r>   r   ;  r;  r   r   r   r=   r=   r>   -test_enum_has_extra_members_with_aliases_flag9  r   z9TestOrderV3.test_enum_has_extra_members_with_aliases_flagN)r6   r7   r8   r   r*  r.  r2  r4  r5  r8  r<  r>  r?  r@  rA  rB  rC  rD  r=   r=   r=   r>   r%    s     		
		r%  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestNamedTupleV3c                 C   s   G dd dt tjd}|ddd}| d|v  | d|v  | d|v  | |jd | |jd | t|dd | t|d d S )Nc                   @   r   )z.TestNamedTupleV3.test_fixed_size.<locals>.Bookr(   r   r3   Nr6   r7   r8   r@  authorgenrer=   r=   r=   r>   BookG  r   rI  sizeTecklaSteven Brustfantasy)	r   r   fixedrm   r   r@  rG  r   r   rc   rI  r  r=   r=   r>   test_fixed_sizeF  s   z TestNamedTupleV3.test_fixed_sizec                 C   s   G dd dt tjd}|ddd}| d|v  | d|v  | d|v  | |jd | |jd | |d d |dd}| d|v  | d|v  | |jd | |jd | t|d d S )Nc                   @   rY   )z0TestNamedTupleV3.test_minimum_size.<locals>.Bookr(   r   N)r6   r7   r8   r@  rG  r=   r=   r=   r>   rI  U  r_   rI  rJ  rL  rM  rN  r3   )	r   r   minimumrm   r   r@  rG  r   r   rP  r=   r=   r>   test_minimum_sizeT  s   
z"TestNamedTupleV3.test_minimum_sizec                 C   s   G dd dt tjd}|ddd}| d|v  | d|v  | d|v  | |jd | |jd | |jd |dd}| d|v  | d|v  | |jd | |jd | t	t
|d | jt|ddd | jt|dd	 d S )
Nc                   @   r   )z1TestNamedTupleV3.test_variable_size.<locals>.Bookr(   r   r3   NrF  r=   r=   r=   r>   rI  g  r   rI  rJ  rL  rM  rN  rH  )r@  rH  )rG  )r   r   variablerm   r   r@  rG  rH  r   AttributeErrorgetattrr   rP  r=   r=   r>   test_variable_sizef  s    
z#TestNamedTupleV3.test_variable_sizeN)r6   r7   r8   rQ  rS  rW  r=   r=   r=   r>   rE  D  s    rE  c                   @   s@   e Zd Zdd Zdd Zdd Zdd Zee	d	d
d Z
dS )TestStackoverflowAnswersV3c                 C   sP   G dd dt }|}| |jjd | |jj|ju  | |jj|ju  d S )Nc                   @   s$   e Zd ZdZdZdZdZdd ZdS )zOTestStackoverflowAnswersV3.test_self_referential_directions.<locals>.Directionsr   r(   )r(   r   )r(   )r(   rZ  c                 S   sR   || _ || _t| jr't| j}|d |d }}|| _|| _| |_| |_d S d S Nr(   rZ  )r9  r:  r  rz   r   leftright)rc   r9  r:  allr\  r]  r=   r=   r>   r     s   


zXTestStackoverflowAnswersV3.test_self_referential_directions.<locals>.Directions.__init__N)r6   r7   r8   rU   rT   rV   rS   r   r=   r=   r=   r>   
Directions  s    r_  rY  )	r   r   rU   r   rm   r\  rT   rV   r]  )rc   r_  rK   r=   r=   r>    test_self_referential_directions  s
   z;TestStackoverflowAnswersV3.test_self_referential_directionsc                 C   sP   G dd dt }| |jj|ju  | |jj|ju  | |jj|ju  d S )Nc                   @   s    e Zd ZdZdZdZdd ZdS )zQTestStackoverflowAnswersV3.test_self_referential_rock_paper_scissors.<locals>.RPSrockpaperscissorsc                 S   s:   t | jrt| j}|d |d }}| |_|| _d S d S r[  )r  rz   r   beats)rc   r   r^  r   previousr=   r=   r>   r     s   


zZTestStackoverflowAnswersV3.test_self_referential_rock_paper_scissors.<locals>.RPS.__init__N)r6   r7   r8   RockPaperScissorsr   r=   r=   r=   r>   RPS  s
    ri  )r   rm   rf  rd  rh  rg  )rc   ri  r=   r=   r>   )test_self_referential_rock_paper_scissors  s   zDTestStackoverflowAnswersV3.test_self_referential_rock_paper_scissorsc                 C   sp   G dd dt }G dd d|}ttjtd}| }W d    n1 s(w   Y  | t	d| d S )Nc                   @   r   )z@TestStackoverflowAnswersV3.test_arduino_headers.<locals>.CHeaderc                 [   sn   | j }t| d| }t|d}|d | D ]}|d|j|jf  qW d    d S 1 s0w   Y  d S )Nz_%s__headerwzinitial header stuff here
z#define %s %r
)r6   rV  openwriterw   r   )rv   r  cls_nameheader_pathfhenumr=   r=   r>   r     s   
"zRTestStackoverflowAnswersV3.test_arduino_headers.<locals>.CHeader.__init_subclass__N)r6   r7   r8   r   r=   r=   r=   r>   CHeader  r   rr  c                   @   s"   e Zd ZejedZdZdZ	dS )z@TestStackoverflowAnswersV3.test_arduino_headers.<locals>.Arduino	arduino.hr   r3   N)
r6   r7   r8   ospathjointempdir_Arduino__headerONETWOr=   r=   r=   r>   Arduino  s    r{  rs  zv                initial header stuff here
                #define ONE 1
                #define TWO 2
                )
r   rl  rt  ru  rv  rw  readr   textwrapdedent)rc   rr  r{  rp  datar=   r=   r>   test_arduino_headers  s   	
z/TestStackoverflowAnswersV3.test_arduino_headersc                 C   sz   G dd dt tdd}| |jjd | |jjd | |jjd | |jjd | |jjd | |j	jd	 d S )
Nc                   @   sX   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 dS )z>TestStackoverflowAnswersV3.test_create_C_like_Enum.<locals>.Id   i   i   N)r6   r7   r8   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_IDr=   r=   r=   r>   Id  s(    r  r(   r   r5   r  i  i  i  )
r   r   r   r  r   r  r  r  r  r  )rc   r  r=   r=   r>   test_create_C_like_Enum  s    z2TestStackoverflowAnswersV3.test_create_C_like_Enumzpyparsing not installedc                    s  t tjtdd}|d W d    n1 sw   Y  ddlmmm	m
m ddlmmm	 d  G  	f
dddtG d	d
 d
td G dd d }G dd d }| t||j|j|j|j|j|j|jg | |jjd | |jjd | |jjd | |jjd | t||j|j|j|jg | |jjd | |jjd | |jjd | |jjd d S )Nc_plus_plus.hrk  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                       sJ   e Zd Zedd Z fddZ 	
fddZ  ZS )zETestStackoverflowAnswersV3.test_c_header_scanner.<locals>.CPPEnumTypec                 [   s   i S rr   r=   )metaclsclsnamebasesr  r=   r=   r>   __prepare__  s   zQTestStackoverflowAnswersV3.test_c_header_scanner.<locals>.CPPEnumType.__prepare__c                    s   t  | j|  d S rr   )rs   r   )r  r   r  )CPPEnumTyperz   r=   r>   r     r+  zNTestStackoverflowAnswersV3.test_c_header_scanner.<locals>.CPPEnumType.__init__c                    s   d u r%t | j||fi |}|| t | j| |||fi |S g }z|d}W n ty9   tdw |d| }t|}	|		 }
W d    n1 sUw   Y  t
d\}}}}d}	d }
}|d||d  }|||  }||d | |d	 | }||
D ]+\}}}|j|krqd
}|jD ]}|jdkrt|j}||j |f |d7 }qqt | j||fi |}t| }|jdd d |D ]\}}|||< q|D ]\}}|||< qt | j| |||fi |S )N_filez_file not specified_namez{}=,rq  _rw   r   namesr(    r   c                 S   s    | d d dkrd| fS d| fS )Nr(   r  r   r=   )pr=   r=   r>   r  @  s     z_TestStackoverflowAnswersV3.test_c_header_scanner.<locals>.CPPEnumType.__new__.<locals>.<lambda>)key)rs   r  updater  popKeyErrorr   r   rl  r|  map
scanStringrq  r  r   rk  appendrw   upperr   itemssort)r  r  r  clsdictr  	enum_dictmembersfilecpp_enum_namerp  file_contentsLBRACERBRACEEQCOMMA_enum
identifierinteger	enumValueenumListrq  r  r   stopidentryr  rw   r   )CPPEnumr  r  r  r  r  r  rz   r  r  r  r=   r>   r    sN   









zMTestStackoverflowAnswersV3.test_c_header_scanner.<locals>.CPPEnumType.__new__)r6   r7   r8   r  r  r   r  r{   r=   
r  r  r  r  r  r  r  r  r  r  ry   r>   r    s
    
(r  c                   @   r}   )zATestStackoverflowAnswersV3.test_c_header_scanner.<locals>.CPPEnumNr~   r=   r=   r=   r>   r  H  r   r  r   c                   @   s   e Zd ZejedZdS )z?TestStackoverflowAnswersV3.test_c_header_scanner.<locals>.Hellor  N)r6   r7   r8   rt  ru  rv  rw  r  r=   r=   r=   r>   HelloK  s    r  c                   @   s   e Zd ZejedZdZdS )z>TestStackoverflowAnswersV3.test_c_header_scanner.<locals>.Blahr  blahN)	r6   r7   r8   rt  ru  rv  rw  r  r  r=   r=   r=   r>   BlahN  s    r  r4   r/  r  r   2   )rl  rt  ru  rv  rw  rm  	pyparsingr  r  r  r  r  r  r  r  r   r   r   r   ZEROry  rz  THREEFIVESIXTENr   ALPHABETAGAMMAZETA)rc   rp  r  r  r=   r  r>   test_c_header_scanner  s4   &;z0TestStackoverflowAnswersV3.test_c_header_scannerN)r6   r7   r8   r`  rj  r  r  r#  r$  r  r  r=   r=   r=   r>   rX  }  s    
*rX  c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TestIssuesV3z.
    Problems that were stated in issues.
    c                 C   s   G dd dt ttdd}| dd |D g d | dd |D g d	 | |d|j | |d
|j | |d|j | |d|j | |d|j | |d|j d S )Nc                   @   r   )z7TestIssuesV3.test_auto_multi_int_1.<locals>.Measurementrd  re  rf  Nrg  r=   r=   r=   r>   rj  j  r   rj  r(   )r   c                 S   rI  r=   rJ  rK  r=   r=   r>   rN  n  rO  z6TestIssuesV3.test_auto_multi_int_1.<locals>.<listcomp>r(   r   r3   c                 S   rI  r=   r   rK  r=   r=   r>   rN  o  rO  rg   rh  ri  rd  r   re  r3   rf  )rk  r
   r   r   r  rg   rh  ri  rc   rj  r=   r=   r>   test_auto_multi_int_1i  s   z"TestIssuesV3.test_auto_multi_int_1c                 C   s   G dd dt tttfdd}| dd |D g d | dd |D g d	 | |d|j | |d
|j | |d|j | |d|j | |d|j | |d|j d S )Nc                   @   r   )z7TestIssuesV3.test_auto_multi_int_2.<locals>.Measurementrd  re  rf  Nrg  r=   r=   r=   r>   rj  x  r   rj  r(   r   c                 S   rI  r=   rJ  rK  r=   r=   r>   rN  |  rO  z6TestIssuesV3.test_auto_multi_int_2.<locals>.<listcomp>r  c                 S   rI  r=   r   rK  r=   r=   r>   rN  }  rO  r  rd  r   re  r3   rf  )	rk  r   r   r   r   r  rg   rh  ri  r  r=   r=   r>   test_auto_multi_int_2w  s   z"TestIssuesV3.test_auto_multi_int_2c                 C   s   G dd dt tdd}| |jjd | |jjd | |jjd t|ddd	 | t||j|j	|j
|jg | |jjd | |jjd | |d|ju  | |d	|ju  d S )
Nc                   @   r   )z6TestIssuesV3.test_extend_enum_with_init.<locals>.Color)rk   yes)2no)3maybeNr   r=   r=   r=   r>   r     r   r   zfoo barr#  rk   r  opacity4never)r   r   r   r   r   r  r   r   r   r   r   r  rw   rm   r   r=   r=   r>   test_extend_enum_with_init  s    z'TestIssuesV3.test_extend_enum_with_initN)r6   r7   r8   r   r  r  r  r=   r=   r=   r>   r  d  s
    r  c                   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zeedd d! Zeedd"d# Zeedd$d% Zeedd&d' Zeedd(d) Zeed*d+d, Zeed*d-d. Zeed/d0d1 Zeeoee k d/d2d3 Z!eeoee kd/d4d3 Z!ee"d5d6d7 Z#ee"d5d8d9 Z$ee%d:d;d< Z&d=S )>TestExtendEnumV3c                 C   s  G dd dt }| tdt|dd t|dd | |jjd | |jjd | |j|v  | |d|j | |d |j | t	|d t|d | |j
jd | |j
jd | |j
|v  | |d|j
 | |d |j
 | t	|d d S )	Nc                   @   r   )z6TestExtendEnumV3.test_extend_enum_plain.<locals>.Colorr   r3   r4   Nr   r=   r=   r=   r>   r     r   r   z(.blue. already in use as .Color.blue: 3.r   rG   r  r5   mauve)r   r   r   r   r   r  rw   r   rm   r  r  r   r=   r=   r>   r    s    
z'TestExtendEnumV3.test_extend_enum_plainc                 C      G dd dt }t|dd | |jjd | |jjd | |j|v  | |d|j | |d |j | t|d d S )Nc                   @   r   )z6TestExtendEnumV3.test_extend_enum_alias.<locals>.Colorr   r3   r4   Nr   r=   r=   r=   r>   r     r   r   r  r   r   r4   )	r   r   r   r  rw   r   rm   r   r  r   r=   r=   r>   test_extend_enum_alias  s   z'TestExtendEnumV3.test_extend_enum_aliasc                 C   s  G dd dt }| tdt|dd | |jjd | |jjd | |j|v  | |d|j | |d |j | |j	jd | |j	jd | |j	|v  | |d|j	 | |d	 |j
 | |j
jd	 | |j
jd
 | |j
|v  | |d
|j
 | t|d
 t|dd | |jjd | |jjd | |j|v  | |d|j | |d |j | t|d | tdt|dd t|d | |jjd | |jjd | |j|v  | |d|j | |d |j | t|d d S )Nc                   @   r   )z7TestExtendEnumV3.test_extend_enum_unique.<locals>.Colorr   r3   r4   Nr   r=   r=   r=   r>   r     r   r   z0<Color.rojo: 1> is a duplicate of <Color.red: 1>r  r   r   r   r3   r   r4   r  r5   z3<Color.verde: 2> is a duplicate of <Color.green: 2>r  r  rG   )r   r   r  r   r   r   rw   r   rm   r   r   r  r  r  r   r=   r=   r>   test_extend_enum_unique  s@   
z(TestExtendEnumV3.test_extend_enum_uniquec                 C      G dd dt }t|dd | |jjd | |jjd | |j|v  | |d|j | |d |j | t|d | |jjd d S )Nc                   @   r   )z@TestExtendEnumV3.test_extend_enum_shadow_property.<locals>.Colorr   r3   r4   Nr   r=   r=   r=   r>   r     r   r   r   r5   r   )r   r   r   r   rw   rm   r  r   r   r=   r=   r>    test_extend_enum_shadow_property  s   z1TestExtendEnumV3.test_extend_enum_shadow_propertyc                 C   f   G dd dt }G dd d|t}| tdt|dd | t|d | t||j|j	|j
g d S )	Nc                   @   r   )z<TestExtendEnumV3.test_extend_enum_shadow_base.<locals>.hohumc                 S   r  zcyanize a colorrJ  r   r=   r=   r>   ra    r  zATestExtendEnumV3.test_extend_enum_shadow_base.<locals>.hohum.cyanNr6   r7   r8   ra  r=   r=   r=   r>   hohum  r   r  c                   @   r   )z<TestExtendEnumV3.test_extend_enum_shadow_base.<locals>.Colorr   r3   r4   Nr   r=   r=   r=   r>   r     r   r   already in use in superclassra  r5   r4   )r  r   r   r   r   r   r  r   r   r   r   rc   r  r   r=   r=   r>   test_extend_enum_shadow_base  s
    z-TestExtendEnumV3.test_extend_enum_shadow_basec                 C   s   G dd dt }t|ddd | |jjd | |jjd | |j|v  | |d|j | |d|j | |d |j | t|d | t	dt|d d S )	Nc                   @   r   )z;TestExtendEnumV3.test_extend_enum_multivalue.<locals>.Colorr   r5   r3  r3   rG   r  r4   r/  r4  Nr   r=   r=   r=   r>   r      r   r   r  r     r5   z'no values specified for MultiValue enumr  )
r   r   r   r  rw   r   rm   r  r   r  r   r=   r=   r>   test_extend_enum_multivalue  s   z,TestExtendEnumV3.test_extend_enum_multivaluec                 C   s  G dd dt }| tdt|dd | |jjd | |jjd | |j|v  | |d|j | |d|j | |d|j | |d |j | |j	jd	 | |j	jd
 | |j	|v  | |d
|j	 | |d|j	 | |d|j	 | |d |j
 | |j
jd | |j
jd | |j
|v  | |d|j
 | |d|j
 | |d|j
 | t|d d S )Nc                   @   r   )zATestExtendEnumV3.test_extend_enum_multivalue_alias.<locals>.Colorr  r  r  Nr   r=   r=   r=   r>   r     r   r   z0<Color.rojo: 7> is a duplicate of <Color.red: 1>r  r3  r   r   r5   r   r3   rG   r  r   r4   r/  r4  )r   r   r  r   r   r   rw   r   rm   r   r   r  r   r=   r=   r>   !test_extend_enum_multivalue_alias  s.   z2TestExtendEnumV3.test_extend_enum_multivalue_aliasc                 C   s   G dd dt t}| |jt u  t|ddd | t||j|j|j	|j
g | |d|j
u  | |d|j
u  | |j
jdk | |j
jdk d S )Nc                   @   r   )z;TestExtendEnumV3.test_extend_enum_multivalue_str.<locals>.M)value_1VALUE_1)value_2VALUE_2)value_3VALUE_3N)r6   r7   r8   r  r  r   r=   r=   r=   r>   rl  ,  r   rl  VALUE_4value_4)ra   r   rm   _member_type_r   r   r   r  r  r   r  rw   r   )rc   rl  r=   r=   r>   test_extend_enum_multivalue_str+  s    z0TestExtendEnumV3.test_extend_enum_multivalue_strc                 C      G dd dt }dD ]
\}}t||| q
| t|d | t||j|j|j|j|j	g | |jj
d | |jj
d d S )Nc                   @   rY   )z3TestExtendEnumV3.test_extend_intenum.<locals>.Index     Nr6   r7   r8   
DeviceTypeErrorRegisterr=   r=   r=   r>   Index9  r_   r  )ControlWordi@`  )
StatusWordA`  )OperationModei``  rG   r  r  )r   r   r   r  r   r	  r
  r  r  r  r   rc   r  rw   r   r=   r=   r>   test_extend_intenum8  s   $z$TestExtendEnumV3.test_extend_intenumc                 C      G dd dt }d}t|dddd t|dd	d
d | t||d  | t|dd  |j|jg | |jjd | |jjd | |jj	d | |jj
d | |jjd	 | |jjd | |jj	d
 | |jj
d d S )Nc                   @       e Zd Zdd ZdZdZdZdS )z;TestExtendEnumV3.test_extend_multi_init.<locals>.HTTPStatusc                 S   "   t | |}||_||_||_|S rr   rk  r  _value_phrasedescriptionrv   r   r  r  rx   r=   r=   r>   r  K  
   zCTestExtendEnumV3.test_extend_multi_init.<locals>.HTTPStatus.__new__d   Continuez!Request received, please continuee   zSwitching Protocolsz.Switching to new protocol; obey Upgrade headerf   
Processingr  Nr6   r7   r8   r  CONTINUESWITCHING_PROTOCOLS
PROCESSINGr=   r=   r=   r>   
HTTPStatusJ  
    r(  r4   BAD_SPAM  
Too greasyfor a trainBAD_EGGS  	Too greenr  r3   )r   r   r   r  r   r*  r.  r   rw   r  r  rc   r(  lengthr=   r=   r>   test_extend_multi_initI  s"   
z'TestExtendEnumV3.test_extend_multi_initc                 C      G dd dt }t|d | |d|ju  | t|j| | |jjd t|dd | |d|ju  | t|j| | |jjd | t|t  d S )Nc                   @   r2   )z0TestExtendEnumV3.test_extend_flag.<locals>.Colorr(   r   r3   r5   Nr6   r7   r8   r  r   r   r   r=   r=   r=   r>   r   g  r@   r   MAGENTAr  PURPLEr5  )	r   r   rm   r7  ro   r   r   r8  rn   r   r=   r=   r>   test_extend_flagf  s   
z!TestExtendEnumV3.test_extend_flagc                 C   s  G dd dt }t|dd | |d|ju  | t|j| | |jjd | t|t  t|d | |d|ju  | t|j| | |jjd t|d | |j	j
d | |j	jd | |j	|v  | |d|j	 | |d |j	 | t|d	 d S )
Nc                   @   r2   )z:TestExtendEnumV3.test_extend_flag_backwards.<locals>.Colorr(   r   r3   r5   Nr6  r=   r=   r=   r>   r   w  r@   r   r8  r5  r7  r  r     rG   )r   r   rm   r8  ro   r   r   rn   r7  r  rw   r  r   r=   r=   r>   test_extend_flag_backwardsv  "   

z+TestExtendEnumV3.test_extend_flag_backwardsc                 C   s  G dd dt }t|d | |d|ju  | t|j| | |jjd t|dd | |d|ju  | t|j| | |jjd | t|t	 t|d | |j
jd | |j
jd | |j
|v  | |d|j
 | |d |j
 | t|d	 d S )
Nc                   @   r2   )z3TestExtendEnumV3.test_extend_intflag.<locals>.Colorr(   r   r3   r5   Nr6  r=   r=   r=   r>   r     r@   r   r7  r  r8  r5  r  r:  rG   )r   r   rm   r7  ro   r   r   r8  rn   r   r  rw   r  r   r=   r=   r>   test_extend_intflag  s"   

z$TestExtendEnumV3.test_extend_intflagc                 C   s  G dd dt }t|dd | |d|ju  | t|j| | |jjd | t|t t|d | |d|j	u  | t|j	| | |j	jd t|d | |j
jd | |j
jd | |j
|v  | |d|j
 | |d |j
 | t|d	 d S )
Nc                   @   r2   )z=TestExtendEnumV3.test_extend_intflag_backwards.<locals>.Colorr(   r   r3   r5   Nr6  r=   r=   r=   r>   r     r@   r   r8  r5  r7  r  r  r:  rG   )r   r   rm   r8  ro   r   r   rn   r   r7  r  rw   r  r   r=   r=   r>   test_extend_intflag_backwards  r<  z.TestExtendEnumV3.test_extend_intflag_backwardsc                 C   N   G dd dt }t|d | |jjd | |jjd | t|d d S )Nc                   @      e Zd Ze Ze Ze ZdS )z3TestExtendEnumV3.test_extend_strenum.<locals>.ColorNr6   r7   r8   r   r   r   r   r=   r=   r=   r>   r         
r   r  r  r5   r   r   r   r  rw   r   r  r   r=   r=   r>   test_extend_strenum  s
   
z$TestExtendEnumV3.test_extend_strenumzStdlib Enum not availablec                 C   s   G dd dt }| t|jdd d  t|dd | |jjd | |jjd | |j|v  | |d|j | |d |j | t	|d d S )Nc                   @   r   )z7TestExtendEnumV3.test_extend_enum_stdlib.<locals>.Colorr   r3   r4   Nr   r=   r=   r=   r>   r     r   r   _values_r  r5   )
r   r   rV  r   r   r  rw   r   rm   r  r   r=   r=   r>   test_extend_enum_stdlib  s   z(TestExtendEnumV3.test_extend_enum_stdlibc                 C   s@  G dd dt }| tdt|dd t|dd | |jjd | |jjd | |j|v  | |d|j | |d |j | t	|d | t
||j|j|j|jg | dd	 |D g d
 t|d | |jjd | |jjd | |j|v  | |d|j | |d |j | t	|d d S )Nc                   @   r   )z=TestExtendEnumV3.test_extend_enum_plain_stdlib.<locals>.Colorr   r3   r4   Nr   r=   r=   r=   r>   r     r   r   zalready in use asr   rG   r  r5   c                 S   rI  r=   rJ  )rL  r  r=   r=   r>   rN    rO  zBTestExtendEnumV3.test_extend_enum_plain_stdlib.<locals>.<listcomp>)r   r3   r4   r5   r  )r   r   r   r   r   r  rw   r   rm   r  r   r   r   r   r  r   r=   r=   r>   test_extend_enum_plain_stdlib  s$    
z.TestExtendEnumV3.test_extend_enum_plain_stdlibc                 C   r  )Nc                   @   r   )z=TestExtendEnumV3.test_extend_enum_alias_stdlib.<locals>.Colorr   r3   r4   Nr   r=   r=   r=   r>   r     r   r   r  r   r   r4   )	r   r   r   r  rw   r   rm   r   r  r   r=   r=   r>   test_extend_enum_alias_stdlib  s   z.TestExtendEnumV3.test_extend_enum_alias_stdlibc                 C   r  )Nc                   @   r   )zGTestExtendEnumV3.test_extend_enum_shadow_property_stdlib.<locals>.Colorr   r3   r4   Nr   r=   r=   r=   r>   r     r   r   r   r5   r   )r   r   r   r   rw   rm   r  r   r   r=   r=   r>   'test_extend_enum_shadow_property_stdlib  s   z8TestExtendEnumV3.test_extend_enum_shadow_property_stdlibc                 C   r  )	Nc                   @   r   )zCTestExtendEnumV3.test_extend_enum_shadow_base_stdlib.<locals>.hohumc                 S   r  r  rJ  r   r=   r=   r>   ra    r  zHTestExtendEnumV3.test_extend_enum_shadow_base_stdlib.<locals>.hohum.cyanNr  r=   r=   r=   r>   r    r   r  c                   @   r   )zCTestExtendEnumV3.test_extend_enum_shadow_base_stdlib.<locals>.Colorr   r3   r4   Nr   r=   r=   r=   r>   r     r   r   r  ra  r5   r4   )r  r   r   r   r   r   r  r   r   r   r   r  r=   r=   r>   #test_extend_enum_shadow_base_stdlib  s
    z4TestExtendEnumV3.test_extend_enum_shadow_base_stdlibzStdlib IntEnum not availablec                 C   r  )Nc                   @   rY   )z:TestExtendEnumV3.test_extend_intenum_stdlib.<locals>.Indexr  r  Nr  r=   r=   r=   r>   r     r_   r  r  rG   r  r  )r   r   r   r  r   r	  r
  r  r  r  r   r  r=   r=   r>   test_extend_intenum_stdlib  s   $z+TestExtendEnumV3.test_extend_intenum_stdlibc                 C   r  )Nc                   @   r  )zBTestExtendEnumV3.test_extend_multi_init_stdlib.<locals>.HTTPStatusc                 S   r  rr   r  r  r=   r=   r>   r  3  r  zJTestExtendEnumV3.test_extend_multi_init_stdlib.<locals>.HTTPStatus.__new__r  r  r!  Nr$  r=   r=   r=   r>   r(  2  r)  r(  r4   r*  r+  r,  r-  r.  r/  r0  r  r3   r1  )r   r   r   r  r   r*  r.  r   rw   r  r  r2  r=   r=   r>   test_extend_multi_init_stdlib0  s"   
z.TestExtendEnumV3.test_extend_multi_init_stdlibzStdlib Flag not availablec                 C   r5  )Nc                   @   r2   )z7TestExtendEnumV3.test_extend_flag_stdlib.<locals>.Colorr(   r   r3   r5   Nr6  r=   r=   r=   r>   r   P  r@   r   r7  r  r8  r5  )	r   r   rm   r7  ro   r   r   r8  rn   r   r=   r=   r>   test_extend_flag_stdlibN  s   
z(TestExtendEnumV3.test_extend_flag_stdlibc                 C     G dd dt }t|dd | |d|ju  | t|j| | |jjd | t|t  t|d | |d|ju  | t|j| | |jjd t|d | |j	j
d | |j	jd | |j	|v  | |d|j	 | |d |j	 d S )	Nc                   @   r2   zATestExtendEnumV3.test_extend_flag_backwards_stdlib.<locals>.Colorr(   r   r3   r5   Nr6  r=   r=   r=   r>   r   a  r@   r   r8  r5  r7  r:  r      r   r   rm   r8  ro   r   r   rn   r7  r  rw   r   r=   r=   r>   !test_extend_flag_backwards_stdlib_      

z2TestExtendEnumV3.test_extend_flag_backwards_stdlibc                 C   rN  )	Nc                   @   r2   rO  r6  r=   r=   r=   r>   r   z  r@   r   r8  r5  r7  r  r  r:  rQ  r   r=   r=   r>   rR  x  rS  zStdlib IntFlag not availablec                 C   s  G dd dt }t|d | |d|ju  | t|j| | |jjd t|dd | |d|ju  | t|j| | |jjd | t|t	 t|d | |j
jd | |j
jd | |j
|v  | |d|j
 | |d |j
 d S )	Nc                   @   r2   )z:TestExtendEnumV3.test_extend_intflag_stdlib.<locals>.Colorr(   r   r3   r5   Nr6  r=   r=   r=   r>   r     r@   r   r7  r  r8  r5  r  r:  )r   r   rm   r7  ro   r   r   r8  rn   r   r  rw   r   r=   r=   r>   test_extend_intflag_stdlib  s    

z+TestExtendEnumV3.test_extend_intflag_stdlibc                 C   s<  G dd dt }ttkrd}d}d}nd}d}d}t|dd	 | |d	|ju  | t|j| | |jjd	 | t	|t
 t|d
 | |||ju  | t|j| | |jj| t|d | |jjd | |jj| | |j|v  | |||j | |d |j | t||t| d S )Nc                   @   r2   )zDTestExtendEnumV3.test_extend_intflag_backwards_stdlib.<locals>.Colorr(   r   r3   r5   Nr6  r=   r=   r=   r>   r     r@   r   rG   r  r:  r3  rP  r8  r5  r7  r  )r   r   r%   r   rm   r8  ro   r   r   rn   r   r7  r  rw   r  r   )rc   r   r3  r7  r  r=   r=   r>   $test_extend_intflag_backwards_stdlib  s0   

z5TestExtendEnumV3.test_extend_intflag_backwards_stdlibzStdlib StrEnum not availablec                 C   r?  )Nc                   @   r@  )z:TestExtendEnumV3.test_extend_strenum_stdlib.<locals>.ColorNrA  r=   r=   r=   r>   r     rB  r   r  r  r5   rC  r   r=   r=   r>   test_extend_strenum_stdlib  s
   
z+TestExtendEnumV3.test_extend_strenum_stdlibN)'r6   r7   r8   r  r  r  r  r  r  r  r  r  r4  r9  r;  r=  r>  rD  r#  r$  r   rF  rG  rH  rI  rJ  r   rK  rL  r   rM  r   r%   rR  r   rT  rU  r   rV  r=   r=   r=   r>   r    sT    *























"r  __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)   rb   r*   pickler+   r,   r-   r.   r#  r/   r0   rt  systempfiler}  r  ImportErrorSyntaxErrorr   r   RuntimeErrorr1   r%  rE  rX  r  r  r6   r=   r=   r=   r>   <module>   s\   , $$ $       1|9 h0    H