o
    ǋi/\                 
   @   s  d dl mZmZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlmZ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& d dlm'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 d dlm1Z1m2Z2m3Z3m4Z4 d d	lm5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d d
l?m@Z@ d dlAmBZB d dlCmDZD d dlEmFZFmGZGmHZHmIZI d dlJmKZLmMZNmOZPmQZR d dlJmSZTmUZVmWZX d dlJmYZZm[Z\m]Z^ d dlJm_Z`maZbmcZdmeZf d dlJmgZhmiZj e6rd dlJmkZl zd dlmZmW n eny   dZmY nw zeo W n epy2   d dlmoZo Y nw eqZrersdd Ztdd ZuG dd de
jvZvz
G dd deZwW n exyc   ey d ZwY nw zG dd dezeZ{W n exy   ey d Z{Y nw zG d d! d!e|eZ}W n exy   ey d Z}Y nw z
G d"d# d#eZ~W n exy Z zeZ~W Y dZ[ndZ[ww z
G d$d% d%eZW n exy Z zeZW Y dZ[ndZ[ww z
G d&d' d'eZW n exy   eZY nw z
G d(d) d)eZW n exy Z zeZW Y dZ[ndZ[ww z	ed*d+eqd,ZW n exy,   ey d ZY nw z
G d-d. d.eZW n exyG   ey d ZY nw z
G d/d0 d0eZW n exyb   ey d ZY nw z	ed1d2eqd,ZW n exy|   ey d ZY nw zed3d4ZW n exy   ey d ZY nw zG d5d6 d6eZG d7d8 d8eZW n exy   ey d ZY nw z
G d9d: d:eZW n
 exy   Y nw dd eIffd;d<Zd eIffd=d>Ze7r dd?lmZmZmZmZmZmZ dd@lmZ e{e_{ee_ee_e5e=krddAlmZ G dBdC dCeZG dDdE dEevZG dFdG dGevZG dHdI dIevZG dJdK dKevZG dLdM dMevZG dNdO dOevZG dPdQ dQevZG dRdS dSevZG dTdU dUe
jvZG dVdW dWevZG dXdY dYevZG dZd[ d[evZG d\d] d]evZG d^d_ d_evZG d`da daevZG dbdc dcevZddZddZddZddZddZddZdeZdeZdfZdfZddZddZddZddZddZddZdgZdhZddZdiZdjZdkZdlZdmZG dndo doevZdpdq Zdrds ZeqdtkrDeġ ZdZzEe7ree_e
jdudvZejȠɡ  ejjD ]\ZZedweef  qW eedx eƐr#eeejjҐpejjӃrdpd  dS dS eedx eƐrCeeejjҐp9ejjӃr?dp@d  w w dS )y    )divisionprint_functionN)EnumTypeEnumMetaEnumIntEnumStrEnumLowerStrEnumUpperStrEnumReprEnum)AutoNumberEnumMultiValueEnumOrderedEnum
UniqueEnumAddValueEnumFlagIntFlag)
NamedTuple	TupleSizeNamedConstantconstantNoAliasAddValueUnique)STRICTCONFORMEJECTKEEP)
_reduce_ex_by_nameuniqueskipextend_enumautoenum
MultiValuemember	nonmemberno_arg)
basestringbaseintegerunicodeenum_property)
pyverPY2PY3PY2_6PY3_3PY3_4PY3_5PY3_6PY3_7PY3_11)	_high_bit)OrderedDict)	timedelta)dumpsloadsPicklingErrorHIGHEST_PROTOCOL)or_and_xorinv)absaddfloordiv)lshiftrshiftmod)mulnegpospow)truedivsub)div)any.c                 C   s2   | tt | tjdttjtjB d |S )Nzdoc/aenum.rst)packageoptionflags)addTestsdoctestDocTestSuiteaenumDocFileSuiteELLIPSISNORMALIZE_WHITESPACE)loadertestsignore r]   N/home/air/goalskill_sales/back/venv/lib/python3.10/site-packages/aenum/test.py
load_tests-   s   
r_   c                       s   e Zd Z fddZ  ZS )TestCasec                    s:   t | dd }|d u rt | d| _tt| j|i | d S )NassertRaisesRegexassertRaisesRegexp)getattrra   superr`   __init__)selfargskwdsregex	__class__r]   r^   re   8   s   zTestCase.__init__)__name__
__module____qualname__re   __classcell__r]   r]   rj   r^   r`   6   s    r`   c                   @      e Zd ZdZdZdZdS )Stooges         Nrl   rm   rn   LARRYCURLYMOEr]   r]   r]   r^   rq   A       rq   rr   c                   @   rp   )
IntStoogesrr   rs   rt   Nru   r]   r]   r]   r^   rz   I   ry   rz   c                   @   rp   )FloatStoogesg=
ףp=?g(\@gR$_	$	@Nru   r]   r]   r]   r^   r{   Q   ry   r{   c                   @       e Zd ZdZdZdZdZdZdS )FlagStoogesrr   rs            Nrl   rm   rn   rv   rw   rx   PMASKCMASKr]   r]   r]   r^   r}   Y       r}   c                   @   $   e Zd ZdZdZdZdZdZdZdS )FlagStoogesWithZeror   rr   rs   r~   r   r   N	rl   rm   rn   NOFLAGrv   rw   rx   r   r   r]   r]   r]   r^   r   c       r   c                   @   r|   )IntFlagStoogesrr   rs   r~   r   r   Nr   r]   r]   r]   r^   r   n   r   r   c                   @   r   )IntFlagStoogesWithZeror   rr   rs   r~   r   r   Nr   r]   r]   r]   r^   r   x   r   r   LifeFormzbranch genus speciesmodulec                   @   rp   )	DeathFormr   rr   rs   N)rl   rm   rn   colorrigidityodorr]   r]   r]   r^   r      ry   r   c                   @      e Zd ZdZdZdS )NameGuido van RossumzBarry WarsawN)rl   rm   rn   BDFLFLUFLr]   r]   r]   r^   r          r   Questionzwho what when where whyAnswerzhim this then there becausec                   @      e Zd Zdd ZdS )WhatsItc                 C   s   | d S Nr   r]   rf   r]   r]   r^   what      zWhatsIt.whatN)rl   rm   rn   r   r]   r]   r]   r^   r          r   c                   @   r   )ThatsItr   rr   N)rl   rm   rn   blahblehr]   r]   r]   r^   r      r   r   c                   @   rp   )Fruitrr   rs   rt   N)rl   rm   rn   tomatobananacherryr]   r]   r]   r^   r      ry   r   c           	   	   C   s   |\}}g }t ||d D ];}z|d u r | tt||d| n| tt||d| W q tyH   t dd  \}}|d||f  Y qw |rTtdd| d S )Nrr   protocolz%2d: %sFailed with protocols: %s, )	ranger:   r9   	Exceptionsysexc_infoappend
ValueErrorjoin)		assertionsourcetargetr   startstopfailuresexctbr]   r]   r^   test_pickle_dump_load   s   r   c              
   C   s   |\}}g }t ||d D ]'}z
| |t||d W q ty4   t d }|d||jj|f  Y qw |r@tdd	| d S )Nrr   r   z	%d: %s %sr   r   )
r   r9   r   r   r   r   rk   rl   r   r   )r   	exceptionobjr   r   r   r   r   r]   r]   r^   test_pickle_exception   s   r   )
TestEnumV3TestOrderV3TestNamedTupleV3TestStackoverflowAnswersV3TestIssuesV3TestExtendEnumV3)test_v3)TestEnumV37c                   @   s   e Zd ZdddZdd ZdS )classpropertyNc                 C   s2   || _ || _|| _|d u r|d ur|j}|| _d S N)fgetfsetfdel__doc__)rf   r   r   r   docr]   r]   r^   re      s   
zclassproperty.__init__c                 C   s
   |  |S r   )r   )rf   instance
ownerclassr]   r]   r^   __get__      
zclassproperty.__get__)NNNN)rl   rm   rn   re   r   r]   r]   r]   r^   r      s    
r   c                   @   sp   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S )	TestOrderz-
    Test _order_ extra/missing members.
    c                 C      G dd dt }d S )Nc                   @      e Zd ZdZdZdZdZdS )z*TestOrder.test_same_members.<locals>.Colorred green bluerr   rs   rt   Nrl   rm   rn   _order_redgreenbluer]   r]   r]   r^   Color   
    r   r   rf   r   r]   r]   r^   test_same_members      zTestOrder.test_same_membersc                 C   r   )Nc                   @       e Zd ZdZdZdZdZeZdS )z7TestOrder.test_same_members_with_aliases.<locals>.Colorr   rr   rs   rt   Nrl   rm   rn   r   r   r   r   verder]   r]   r]   r^   r      r   r   r   r   r]   r]   r^   test_same_members_with_aliases   r   z(TestOrder.test_same_members_with_aliasesc                 C   B   |  td G dd dt}W d    d S 1 sw   Y  d S )N#member order does not match _order_c                   @   r   )z5TestOrder.test_order_has_extra_members.<locals>.Colorred green blue purplerr   rs   rt   Nr   r]   r]   r]   r^   r     r   r   ra   	TypeErrorr   r   r]   r]   r^   test_order_has_extra_members      "z&TestOrder.test_order_has_extra_membersc                 C   r   )Nr   c                   @   r   )zBTestOrder.test_order_has_extra_members_with_aliases.<locals>.Colorr   rr   rs   rt   Nr   r]   r]   r]   r^   r   	  r   r   r   r   r]   r]   r^   )test_order_has_extra_members_with_aliases  r   z3TestOrder.test_order_has_extra_members_with_aliasesc                 C   r   )Nr   c                   @   r|   )z4TestOrder.test_enum_has_extra_members.<locals>.Colorr   rr   rs   rt   r~   Nrl   rm   rn   r   r   r   r   purpler]   r]   r]   r^   r     r   r   r   r   r]   r]   r^   test_enum_has_extra_members  r   z%TestOrder.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 )zATestOrder.test_enum_has_extra_members_with_aliases.<locals>.Colorr   rr   rs   rt   r~   N	rl   rm   rn   r   r   r   r   r   r   r]   r]   r]   r^   r     r   r   r   r   r]   r]   r^   (test_enum_has_extra_members_with_aliases  r   z2TestOrder.test_enum_has_extra_members_with_aliasesc                 C   r   )Nc                   @   r   )z/TestOrder.test_same_members_flag.<locals>.Colorr   rr   rs   r~   Nr   r]   r]   r]   r^   r   $  r   r   r   r   r]   r]   r^   test_same_members_flag#  r   z TestOrder.test_same_members_flagc                 C   r   )Nc                   @   r   )z<TestOrder.test_same_members_with_aliases_flag.<locals>.Colorr   rr   rs   r~   Nr   r]   r]   r]   r^   r   +  r   r   r   r   r]   r]   r^   #test_same_members_with_aliases_flag*  r   z-TestOrder.test_same_members_with_aliases_flagc                 C   r   )Nr   c                   @   r   )z:TestOrder.test_order_has_extra_members_flag.<locals>.Colorr   rr   rs   r~   Nr   r]   r]   r]   r^   r   4  r   r   ra   r   r   r   r]   r]   r^   !test_order_has_extra_members_flag2  r   z+TestOrder.test_order_has_extra_members_flagc                 C   r   )Nr   c                   @   r   )zGTestOrder.test_order_has_extra_members_with_aliases_flag.<locals>.Colorr   rr   rs   r~   Nr   r]   r]   r]   r^   r   <  r   r   r   r   r]   r]   r^   .test_order_has_extra_members_with_aliases_flag:  r   z8TestOrder.test_order_has_extra_members_with_aliases_flagc                 C   r   )Nr   c                   @   r|   )z9TestOrder.test_enum_has_extra_members_flag.<locals>.Colorr   rr   rs   r~      Nr   r]   r]   r]   r^   r   E  r   r   r   r   r]   r]   r^    test_enum_has_extra_members_flagC  r   z*TestOrder.test_enum_has_extra_members_flagc                 C   r   )Nr   c                   @   r   )zFTestOrder.test_enum_has_extra_members_with_aliases_flag.<locals>.Colorr   rr   rs   r~   r   Nr   r]   r]   r]   r^   r   N  r   r   r   r   r]   r]   r^   -test_enum_has_extra_members_with_aliases_flagL  r   z7TestOrder.test_enum_has_extra_members_with_aliases_flagN)rl   rm   rn   r   r   r   r   r   r   r   r   r   r   r   r   r   r]   r]   r]   r^   r      s    		
		r   c                   @   sD   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S )TestAutoValuec                 C   s   G dd dt }| |jjd G dd dt}| |jd G dd dt}| |jjd G d	d
 d
t}| |jd d S )Nc                   @   "   e Zd ZdZe Ze Ze ZdS )z)TestAutoValue.test_bare.<locals>.BareEnumONE TWO THREENrl   rm   rn   r   r"   ONETWOTHREEr]   r]   r]   r^   BareEnum[  
    
r  rt   c                   @   r   )z,TestAutoValue.test_bare.<locals>.BareIntEnumr   Nr   r]   r]   r]   r^   BareIntEnumb  r  r  c                   @   r   )z)TestAutoValue.test_bare.<locals>.BareFlagr   Nr   r]   r]   r]   r^   BareFlagi  r  r  r~   c                   @   r   )z,TestAutoValue.test_bare.<locals>.BareIntFlagr   Nr   r]   r]   r]   r^   BareIntFlagp  r  r  )r   assertEqualr  valuer   r   r   )rf   r  r  r  r  r]   r]   r^   	test_bareY  s   zTestAutoValue.test_barec                 C   s   G dd dt }| |jjd | |jjd G dd dt }| |jjd | |jjd G dd dt}| |jd | |jjd G d	d
 d
t}| |jjd | |jjd G dd dt}| |jd | |jjd d S )Nc                   @   r|   )z9TestAutoValue.test_init_only_final.<locals>.InitEnumValuevalue descriptionr   the loneliest numberthe number with you
a triangleNrl   rm   rn   _init_r   r  r  r  r]   r]   r]   r^   InitEnumValuey  r   r  rt   r  c                   @   r|   )z4TestAutoValue.test_init_only_final.<locals>.InitEnumr  r   r  r  r  Nr  r]   r]   r]   r^   InitEnum  r   r  c                   @   r|   )z7TestAutoValue.test_init_only_final.<locals>.InitIntEnumr  r   r  r  r  Nr  r]   r]   r]   r^   InitIntEnum  r   r  c                   @   r|   )z4TestAutoValue.test_init_only_final.<locals>.InitFlagr  r   r  r  r  Nr  r]   r]   r]   r^   InitFlag  r   r  r~   c                   @   r|   )z7TestAutoValue.test_init_only_final.<locals>.InitIntFlagr  r   r  r  r  Nr  r]   r]   r]   r^   InitIntFlag  r   r  )r   r	  r  r
  descriptionr   r   r   )rf   r  r  r  r  r  r]   r]   r^   test_init_only_finalw  s   z"TestAutoValue.test_init_only_finalc                 C   s$  G dd dt }G dd d|}| |jjd | |jjd G dd dt }G d	d d|}| |jjd | |jjd G d
d dt|}| |jd | |jjd G dd dt}G dd d|}| |jjd | |jjd G dd dt|}| |jd | |jjd d S )Nc                   @      e Zd ZdZdS )z=TestAutoValue.test_init_only_inherit.<locals>.InitInheritEnumr  Nrl   rm   rn   r  r]   r]   r]   r^   InitInheritEnum      r  c                   @   r   z6TestAutoValue.test_init_only_inherit.<locals>.InitEnumr   r  r  r  Nrl   rm   rn   r   r  r  r  r]   r]   r]   r^   r    r   r  rt   r  c                   @   r  )zBTestAutoValue.test_init_only_inherit.<locals>.InitInheritValueEnumr  Nr  r]   r]   r]   r^   InitInheritValueEnum  r  r  c                   @   r   r  r  r]   r]   r]   r^   r    r   c                   @   r   )z9TestAutoValue.test_init_only_inherit.<locals>.InitIntEnumr   r  r  r  Nr  r]   r]   r]   r^   r    r   r  c                   @   r  )zBTestAutoValue.test_init_only_inherit.<locals>.InitInheritValueFlagr  Nr  r]   r]   r]   r^   InitInheritValueFlag  r  r   c                   @   r   )z6TestAutoValue.test_init_only_inherit.<locals>.InitFlagr   r  r  r  Nr  r]   r]   r]   r^   r    r   r  r~   c                   @   r   )z9TestAutoValue.test_init_only_inherit.<locals>.InitIntFlagr   r  r  r  Nr  r]   r]   r]   r^   r    r   r  )r   r	  r  r
  r  intr   )rf   r  r  r  r  r   r  r  r]   r]   r^   test_init_only_inherit  s$   z$TestAutoValue.test_init_only_inheritc                 C   sd  G dd dt }| |jjd | |jjd G dd dt}| |jd | |jjd G dd	 d	t}| |jjd
 | |jjd G dd dt}| |jd
 | |jjd G dd dt	t }| |j
jd | |jjd
 | |jjd | |jjd G dd dt	t}| |j
jd
 | |jjd | |jjd | |jjd d S )Nc                   @   *   e Zd ZdZdd Ze Ze Ze ZdS )z7TestAutoValue.test_new_only_final.<locals>.NewFinalEnumr   c                 S      t | }||_d|_|S )NNFE1object__new___value_proofclsr
  r%   r]   r]   r^   r(       
z?TestAutoValue.test_new_only_final.<locals>.NewFinalEnum.__new__N	rl   rm   rn   r   r(  r"   r  r  r  r]   r]   r]   r^   NewFinalEnum      
r/  rt   r%  c                   @   r#  )z:TestAutoValue.test_new_only_final.<locals>.NewFinalIntEnumr   c                 S      t | |}||_d|_|S )NNFE2r!  r(  r)  r*  r+  r]   r]   r^   r(       zBTestAutoValue.test_new_only_final.<locals>.NewFinalIntEnum.__new__Nr.  r]   r]   r]   r^   NewFinalIntEnum  r0  r5  r2  c                   @   r#  )z7TestAutoValue.test_new_only_final.<locals>.NewFinalFlagr   c                 S   r$  )NNFE3r&  r+  r]   r]   r^   r(    r-  z?TestAutoValue.test_new_only_final.<locals>.NewFinalFlag.__new__Nr.  r]   r]   r]   r^   NewFinalFlag  r0  r7  r~   r6  c                   @   r#  )z:TestAutoValue.test_new_only_final.<locals>.NewFinalIntFlagr   c                 S   r1  )NNFE4r3  r+  r]   r]   r^   r(    r4  zBTestAutoValue.test_new_only_final.<locals>.NewFinalIntFlag.__new__Nr.  r]   r]   r]   r^   NewFinalIntFlag  r0  r9  r8  c                   @   .   e Zd ZdZdd ZejZdZdZdZ	dZ
dS )	z:TestAutoValue.test_new_only_final.<locals>.NewFinalStrEnum AllReset Bright FG_Cyan BG_Blackc                 S   *   d| }t | |}||_||_||_|S Nz[%smstrr(  r)  coder  r,  r
  r@  r  	str_valuer   r]   r]   r^   r(       zBTestAutoValue.test_new_only_final.<locals>.NewFinalStrEnum.__new__0z!reset all (colors and brightness)1bright lights!36cyan40blackNrl   rm   rn   r   r(  r?  __str__AllResetBrightFG_CyanBG_Blackr]   r]   r]   r^   NewFinalStrEnum      rU  rE  rH  c                   @   r:  )	z:TestAutoValue.test_new_only_final.<locals>.NewFinalStrFlagr;  c                 S   r<  r=  r>  rA  r]   r]   r^   r(  +  rC  zBTestAutoValue.test_new_only_final.<locals>.NewFinalStrFlag.__new__rD  rF  rI  rL  NrO  r]   r]   r]   r^   NewFinalStrFlag'  rV  rW  r   )r   r	  r  r
  r  r*  r   r   r   r?  rS  rT  rQ  r@  rR  r  )rf   r/  r5  r7  r9  rU  rW  r]   r]   r^   test_new_only_final  s,   



z!TestAutoValue.test_new_only_finalc                 C   s   G dd dt }G dd d|}| |jjd | |jjd G dd dt|}| |jd | |jjd G d	d
 d
t}G dd d|}| |jjd | |jjd G dd dt|}| |jd | |jjd d S )Nc                   @   r   )z=TestAutoValue.test_new_only_inherited.<locals>.NewInheritEnumc                 S   :   | j tu rt| |d }nt| }|d |_d|_|S Nrs   NIE_member_type_r!  r(  r'  r)  r*  r+  r]   r]   r^   r(  A     


zETestAutoValue.test_new_only_inherited.<locals>.NewInheritEnum.__new__Nrl   rm   rn   r(  r]   r]   r]   r^   NewInheritEnum@  r   r`  c                   @   r   )z;TestAutoValue.test_new_only_inherited.<locals>.NewFinalEnumr   Nr   r]   r]   r]   r^   r/  J  r  r/     r[  c                   @   r   )z>TestAutoValue.test_new_only_inherited.<locals>.NewFinalIntEnumr   Nr   r]   r]   r]   r^   r5  R  r  r5  c                   @   r   )z=TestAutoValue.test_new_only_inherited.<locals>.NewInheritFlagc                 S   rY  rZ  r\  r+  r]   r]   r^   r(  [  r^  zETestAutoValue.test_new_only_inherited.<locals>.NewInheritFlag.__new__Nr_  r]   r]   r]   r^   NewInheritFlagZ  r   rb  c                   @   r   )z;TestAutoValue.test_new_only_inherited.<locals>.NewFinalFlagr   Nr   r]   r]   r]   r^   r7  d  r  r7  r   c                   @   r   )z>TestAutoValue.test_new_only_inherited.<locals>.NewFinalIntFlagr   Nr   r]   r]   r]   r^   r9  l  r  r9  )r   r	  r  r
  r  r*  r!  r   )rf   r`  r/  r5  rb  r7  r9  r]   r]   r^   test_new_only_inherited>  s   

z%TestAutoValue.test_new_only_inheritedc                 C   s   G dd dt }| |jjd | |jjd | |jjd G dd dt}| |jd | |jjd | |jjd G d	d
 d
t}| |jjd | |jjd | |jjd G dd dt	}| |jd | |jjd | |jjd d S )Nc                   @   (   e Zd ZdZdZdd ZdZdZdZdS )	z5TestAutoValue.test_init_new_only.<locals>.InitNewEnumr  r   c                 W      t | }||_d|_|S )NINE1r&  r,  r
  rg   r%   r]   r]   r^   r(  y  r-  z=TestAutoValue.test_init_new_only.<locals>.InitNewEnum.__new__r  r  r  N	rl   rm   rn   r  r   r(  r  r  r  r]   r]   r]   r^   InitNewEnumv      ri  rt   r  rf  c                   @   rd  )	z8TestAutoValue.test_init_new_only.<locals>.InitNewIntEnumr  r   c                 W      t | |}||_d|_|S )NINE2r3  rg  r]   r]   r^   r(    r4  z@TestAutoValue.test_init_new_only.<locals>.InitNewIntEnum.__new__r  r  r  Nrh  r]   r]   r]   r^   InitNewIntEnum  rj  rm  rl  c                   @   rd  )	z5TestAutoValue.test_init_new_only.<locals>.InitNewFlagr  r   c                 W   re  )NINE3r&  rg  r]   r]   r^   r(    r-  z=TestAutoValue.test_init_new_only.<locals>.InitNewFlag.__new__r  r  r  Nrh  r]   r]   r]   r^   InitNewFlag  rj  ro  r~   rn  c                   @   rd  )	z8TestAutoValue.test_init_new_only.<locals>.InitNewIntFlagr  r   c                 W   rk  )NINE4r3  rg  r]   r]   r^   r(    r4  z@TestAutoValue.test_init_new_only.<locals>.InitNewIntFlag.__new__r  r  r  Nrh  r]   r]   r]   r^   InitNewIntFlag  rj  rq  rp  )
r   r	  r  r
  r  r  r*  r   r   r   )rf   ri  rm  ro  rq  r]   r]   r^   test_init_new_onlyt  s    z TestAutoValue.test_init_new_onlyc           	      C   sD  G dd dt }G dd d|}| |jjd | |jjd | |jjd G dd	 d	t }G d
d dt|}| |jd | |jjd | |jjd G dd dt}G dd d|}| |jjd | |jjd | |jjd G dd dtt}G dd d|}| |jd | |jjd | |jjd d S )Nc                   @      e Zd ZdZdd ZdS )z4TestAutoValue.test_init_new_inherit.<locals>.InitNewr  c                 W   re  NINr&  rg  r]   r]   r^   r(    r-  z<TestAutoValue.test_init_new_inherit.<locals>.InitNew.__new__Nrl   rm   rn   r  r(  r]   r]   r]   r^   InitNew      rw  c                   @   r   )z8TestAutoValue.test_init_new_inherit.<locals>.InitNewEnumr   r  r  r  Nr  r]   r]   r]   r^   ri    r   ri  rt   r  ru  c                   @   rs  )z7TestAutoValue.test_init_new_inherit.<locals>.InitNewIntr  c                 W   rk  rt  r3  rg  r]   r]   r^   r(    r4  z?TestAutoValue.test_init_new_inherit.<locals>.InitNewInt.__new__Nrv  r]   r]   r]   r^   
InitNewInt  rx  ry  c                   @   r   )z;TestAutoValue.test_init_new_inherit.<locals>.InitNewIntEnumr   r  r  r  Nr  r]   r]   r]   r^   rm    r   rm  c                   @   rs  )z<TestAutoValue.test_init_new_inherit.<locals>.InitNewFlagBaser  c                 W   re  rt  r&  rg  r]   r]   r^   r(    r-  zDTestAutoValue.test_init_new_inherit.<locals>.InitNewFlagBase.__new__Nrv  r]   r]   r]   r^   InitNewFlagBase  rx  rz  c                   @   r   )z8TestAutoValue.test_init_new_inherit.<locals>.InitNewFlagr   r  r  r  Nr  r]   r]   r]   r^   ro    r   ro  r~   c                   @   rs  )z?TestAutoValue.test_init_new_inherit.<locals>.InitNewIntFlagBaser  c                 W   rk  rt  r3  rg  r]   r]   r^   r(    r4  zGTestAutoValue.test_init_new_inherit.<locals>.InitNewIntFlagBase.__new__Nrv  r]   r]   r]   r^   InitNewIntFlagBase  rx  r{  c                   @   r   )z;TestAutoValue.test_init_new_inherit.<locals>.InitNewIntFlagr   r  r  r  Nr  r]   r]   r]   r^   rq    r   rq  )	r   r	  r  r
  r  r  r*  r!  r   )	rf   rw  ri  ry  rm  rz  ro  r{  rq  r]   r]   r^   test_init_new_inherit  s(   z#TestAutoValue.test_init_new_inheritN)
rl   rm   rn   r  r  r"  rX  rc  rr  r|  r]   r]   r]   r^   r   W  s    /4d6>r   c                   @   4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestHelpersc                 C   sN   G dd d}dD ]}| }|  t| t||d | t| q	d S )Nc                   @      e Zd ZdS )z+TestHelpers.test_is_descriptor.<locals>.fooNrl   rm   rn   r]   r]   r]   r^   foo      r  )r   __set__
__delete__rr   )assertFalserV   is_descriptorsetattr
assertTrue)rf   r  attrr   r]   r]   r^   test_is_descriptor  s   zTestHelpers.test_is_descriptorc                 C   8   dD ]
}|  t| qdD ]
}| t| qd S )N)_a__aa_)aa__a__aa____a___a____a________________)r  rV   	is_sunderr  rf   sr]   r]   r^   test_is_sunder  s
   zTestHelpers.test_is_sunderc                 C   r  )N)r  __aa__)r  r  r  r  r  r  r  r  r  r  r  r  r  )r  rV   	is_dunderr  r  r]   r]   r^   test_is_dunder  s
   zTestHelpers.test_is_dunderc                    s  d fdd	}dt tdfdt tdfdtddfdtddfd	td
dfdtddfdtddfdtddfdtddfdt	dfdt
dfdtddfdtddfdtddfdtddfdtddfdtdfdtddfdtddffD ]}||  qgtrw|dtdd t }d}t||}d|_ |jdd  d S )Nc              
      s   |d u rt  }||}| |_ |j|d|j| ||f  d S | }t  }|||}||_ |j|d| |j||j|f  t  }|}|||}| |_ |j|d||j| |j|f  d S Nz%s %r -> %r != %rzforward: %r %s %r -> %r != %rzreversed: %r %s %r -> %r != %r)r"   r
  r	  rl   )firstopfinalsecondleftr
  rightr   r]   r^   tester  s*   




z%TestHelpers.test_auto.<locals>.testerrr   rt   rs      r   1   rq@	   ra               
   r  abbaaa   eggsI see 17 %s!r   )_abs_rA   _add_
_floordiv_	_truediv__mod__lshift__rshift__mul__neg__pos__pow__sub__or__xor__and__inv_r-   _div_r"   r
  r	  )rf   r  rg   r  r  r
  r]   r   r^   	test_auto  s:   















zTestHelpers.test_autoc                    sP  g  d fdd	}dt tdfdt tdfdtddfdtddfd	td
dfdtddfdtddfdtddfdtddfdt	dfdt
dfdtddfdtddfdtddfdtddfdtddfdtdfdtddfdtddffD ]}||  qitry|dtdd td}d}t||}|dd kr d|   rt   D ]}t| q| d d S d S )Nc           	         s   |d u r$t | }t ||}|j|kr" d|j| |j|f  d S d S t | }|}|||}||kr@ d| |j|||f  | }t |}|||}||kr^ d||j| ||f  d S d S r  )r   r
  r   rl   )	r  r  r  r  primary	secondaryr  r  r
  errorsr]   r^   r  K  s.   


z)TestHelpers.test_constant.<locals>.testerrr   r  rt   rs   r  r   r  r  r  ra  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  z'I see 17 eggs!' != %rFr   )r  rA   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r-   r  r   r   printr  )rf   r  rg   r  r  r
  errorr]   r  r^   test_constantI  sH   
















zTestHelpers.test_constantN)rl   rm   rn   r  r  r  r  r  r]   r]   r]   r^   r~    s    	5r~  c                   @      e Zd Zdd Zdd ZdS )TestEnumTypec                 C   s   G dd dt }G dd d|t}| tdt|dd | tdt|d | td	t|jdd | td
t|jd | |jj	d | |jj	d | |j
ddg t|dd | |j
d d S )Nc                   @      e Zd Zedd ZdS )z+TestEnumType.test_immutability.<locals>.Hahc                 S   s   dd | D S )Nc                 S      g | ]}|j qS r]   r
  .0mr]   r]   r^   
<listcomp>      zJTestEnumType.test_immutability.<locals>.Hah.all_values.<locals>.<listcomp>r]   r,  r]   r]   r^   
all_values     z6TestEnumType.test_immutability.<locals>.Hah.all_valuesN)rl   rm   rn   r   r  r]   r]   r]   r^   Hah      r  c                   @   r   )z+TestEnumType.test_immutability.<locals>.Huhrr   rs   Nrl   rm   rn   onetwor]   r]   r]   r^   Huh  r   r  zcannot rebind propertyr
  boomzcannot delete propertyzcannot set attributezcannot delete attributerr   rs   r  c   )r'  r   ra   AttributeErrorr  delattrr  r  r	  r
  r  )rf   r  r  r]   r]   r^   test_immutability  s   zTestEnumType.test_immutabilityc                    s   G dd dt }G dd d|t | t d | t  j j j j j	g | 
td fdd |  jj	d	 d S )
Nc                   @       e Zd Zdd Zedd ZdS )z1TestEnumType.test_enum_shadow_base.<locals>.hohumc                 S   
   | j d S )cyanize a colorrK  r  r   r]   r]   r^   rK       
z6TestEnumType.test_enum_shadow_base.<locals>.hohum.cyanc                 S   s
   d| j  S )Nzazure namer   r]   r]   r^   azure  r  z7TestEnumType.test_enum_shadow_base.<locals>.hohum.azureN)rl   rm   rn   rK  propertyr  r]   r]   r]   r^   hohum  s    r  c                   @   r|   )z1TestEnumType.test_enum_shadow_base.<locals>.Colorrr   rs   rt   r~   r   N)rl   rm   rn   r   r   r   rK  r  r]   r]   r]   r^   r     r   r   r   zno attribute .cyan.c                      s    j jS r   )r   rK  r]   r   r]   r^   <lambda>      z4TestEnumType.test_enum_shadow_base.<locals>.<lambda>z	azure red)r'  r   r	  lenlistr   r   r   rK  r  ra   r  )rf   r  r]   r  r^   test_enum_shadow_base  s   $z"TestEnumType.test_enum_shadow_baseN)rl   rm   rn   r  r  r]   r]   r]   r^   r    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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 Z,dUdV Z-dWdX Z.dYdZ Z/d[d\ Z0d]d^ Z1d_d` Z2dadb Z3dcdd Z4dedf Z5dgdh Z6didj Z7dkdl Z8dmdn Z9dodp Z:dqdr Z;dsdt Z<dudv Z=dwdx Z>dydz Z?d{d| Z@d}d~ ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd ZcddĄ ZdddƄ ZeddȄ Zfddʄ Zgdd̄ Zhdd΄ ZiddЄ Zjdd҄ ZkddԄ Zlddք Zmdd؄ ZndZodZpdZqdd݄ Zrdd߄ Zsdd Ztdd Zudd Zvdd Zwdd Zxdd Zydd Zzdd Z{dd Z|dd Z}dd Z~dd Zdd Zdd Zdd Zdd 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$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZerאdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdQ ZdUdV ZdWS (X  TestEnumc                 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}|| _G dd dtt }|| _G dd dtt }|| _G dd dtt }	|	| _d	d
l	m
} G dd d|t }
|
| _d S )Nc                   @   r   )zTestEnum.setUp.<locals>.Seasonrr   rs   rt   r~   N)rl   rm   rn   SPRINGSUMMERAUTUMNWINTERr]   r]   r]   r^   Season  r   r  c                   @      e Zd ZdZdZde ZdS )z%TestEnum.setUp.<locals>.ReprKonstantsB
@JM!	@rs   Nrl   rm   rn   EPITAUr]   r]   r]   r^   ReprKonstants      r
  c                   @   r|   )z"TestEnum.setUp.<locals>.ReprGradesr   r~   rt   rs   r   Nrl   rm   rn   ABCDFr]   r]   r]   r^   
ReprGrades  r   r  c                   @   r   )z'TestEnum.setUp.<locals>.ReprDirectionaleastwestnorthsouthNrl   rm   rn   EASTWESTNORTHSOUTHr]   r]   r]   r^   ReprDirectional  r   r  r   )datec                   @   r   )z#TestEnum.setUp.<locals>.ReprHoliday  rr   rr   r  rt   r   Nrl   rm   rn   NEW_YEARIDES_OF_MARCHr]   r]   r]   r^   ReprHoliday  r   r$  c                   @   r  )z!TestEnum.setUp.<locals>.Konstantsr  r  rs   Nr  r]   r]   r]   r^   	Konstants  r  r%  c                   @   r|   )zTestEnum.setUp.<locals>.Gradesr   r~   rt   rs   r   Nr  r]   r]   r]   r^   Grades  r   r&  c                   @   r   )z#TestEnum.setUp.<locals>.Directionalr  r  r  r  Nr  r]   r]   r]   r^   Directional  r   r'  c                   @   r   )zTestEnum.setUp.<locals>.Holidayr  r   Nr!  r]   r]   r]   r^   Holiday  r   r(  )r   r  floatr   r
  r   r  r?  r  datetimer  r$  r%  r!  r&  r'  r(  )rf   r  r
  r  r  r  r$  r%  r&  r'  r(  r]   r]   r^   setUp  s(   
zTestEnum.setUpc                    x   G dd dt  G  fdddt}| t||jg | |jjd d|j_| |jjd | |jjd d d S )Nc                   @   *   e Zd ZdZdddZdd Zdd ZdS )	z*TestEnum.test_set_name.<locals>.DescriptorNc                 S      |d u r| S |j | j S r   __dict__r  rf   r   owner_classr]   r]   r^   r        z2TestEnum.test_set_name.<locals>.Descriptor.__get__c                 S      ||j | j< d S r   r/  rf   r   r
  r]   r]   r^   r       z2TestEnum.test_set_name.<locals>.Descriptor.__set__c                 S   
   || _ d S r   r  rf   ownerr  r]   r]   r^   __set_name__  r   z7TestEnum.test_set_name.<locals>.Descriptor.__set_name__r   rl   rm   rn   r  r   r  r:  r]   r]   r]   r^   
Descriptor  
    
r<  c                          e Zd ZdZ  ZdS )z&TestEnum.test_set_name.<locals>.AnEnumr  Nrl   rm   rn   r  r  r]   r<  r]   r^   AnEnum      
rA  r  threer'  r   r	  r  r  r  r  r0  rf   rA  r]   r@  r^   test_set_name     zTestEnum.test_set_namec                 C   d   G dd dt }| t|d | |jd | t|jt  | |jd | t|jt  d S )Nc                   @   r   )z,TestEnum.test_private_names.<locals>.PrivateRadarHoolihanNrl   rm   rn   _Private__corporal_Private__major_r]   r]   r]   r^   Private  r   rN  r   rI  rJ  r   r	  r  rL  r  
isinstancerM  rf   rN  r]   r]   r^   test_private_names     zTestEnum.test_private_namesc                 C      G dd dt }|j}| t||u t| | |j|j|j|jfd |j	}| |j|j|j|jfd |j
}| |j|j|j|jfd d S )Nc                   @   &   e Zd ZdZdddZdZdZdZdS )	z,TestEnum.test_new_with_keywords.<locals>.HuhPLAIN BOLD_ITALIC HIGHLIGHTNc                 S   sB   t | j}t| |}|r|d u r|}||_||_||_||_|S r   )r  __members__r!  r(  opencloser   r)  r,  	docstringrX  rY  r
  r%   r]   r]   r^   r(    s   
z4TestEnum.test_new_with_keywords.<locals>.Huh.__new__normal***really super important******please ==take notice====rb  NNrl   rm   rn   	__order__r(  PLAINBOLD_ITALIC	HIGHLIGHTr]   r]   r]   r^   r    s    

r  r   r\  NNrr   r^  r_  r_  rs   ra  rb  rb  )r   rf  r  typer	  r
  r   rX  rY  rg  rh  rf   r  pbihr]   r]   r^   test_new_with_keywords  s"   zTestEnum.test_new_with_keywordsc                 C   (   G dd dt }| t|jtu  d S )Nc                   @   r   )z@TestEnum.test_members_is_ordereddict_if_ordered.<locals>.Orderedfirst second thirdbippityboppitybooN)rl   rm   rn   re  r  r  thirdr]   r]   r]   r^   Ordered3  r   rx  r   r  rl  rW  r7   )rf   rx  r]   r]   r^   &test_members_is_ordereddict_if_ordered2  s   z/TestEnum.test_members_is_ordereddict_if_orderedc                 C   rr  )Nc                   @   r   )zFTestEnum.test_members_is_ordereddict_if_not_ordered.<locals>.UnorderedthatthoseN)rl   rm   rn   thistheser]   r]   r]   r^   	Unordered;  r   r  ry  )rf   r  r]   r]   r^   *test_members_is_ordereddict_if_not_ordered:  s   z3TestEnum.test_members_is_ordereddict_if_not_orderedc                 C   s    | j }| ||j|ju  d S r   )r  r  r  rf   r  r]   r]   r^   test_enum_in_enum_out@  s   zTestEnum.test_enum_in_enum_outc                 C   s   | j }| |jjd d S Nrr   )r  r	  r  r
  r  r]   r]   r^   test_enum_valueD     zTestEnum.test_enum_valuec                 C   s   |  tjjd d S Nrs   )r	  rz   rw   r
  r   r]   r]   r^   test_intenum_valueH  r   zTestEnum.test_intenum_valuec                 C   s  | j }t|}| t|t| | t|d| | |j|j|j|jg| td	 D ]W\}}|d7 }||}| |t
|| | |j| | || | |j| | ||v  | t||u  | t|| | t|d|  | t|d||f  q.d S )Nr~   SPRING SUMMER AUTUMN WINTERrr   zSeason.z<Season.%s: %s>)r  r  r	  r  r  r  r   r  	enumeratesplitrc   r
  assertNotEqualr  r  rl  rP  r?  repr)rf   r  lstiseasoner]   r]   r^   	test_enumK  s.   
zTestEnum.test_enumc                 C   s^   t dddd}t dddd}t ddd}| ||u | || | || | || d S )Nrr   rs   r  )rC  )r#   r  r	  r  )rf   e1e2e3r]   r]   r^   test_enum_helperb  s   zTestEnum.test_enum_helperc                 C   s   G dd dt }| |jjd | |jjd  | |jjd  | |jj|j | |jjd  | |jjd  | |jj|j d S )Nc                   @   s:   e Zd ZdZdd ZdddZe ZeeZedeZ	dS )z)TestEnum.test_enum_in_enum.<locals>.LevelzDATA_CHECK DESIGN_CHECK ALERTc                 _   s   t | }t| d |_|S r  )r'  r(  r  r)  )r,  rg   rh   r%   r]   r]   r^   r(  p  s   
z1TestEnum.test_enum_in_enum.<locals>.Level.__new__Nc                 S   s`   t | jj | _g | _| jD ]}|j|  q|r | j|j p!d | _|r+| j|j p,d | _	d S r   )
r  rk   _member_map_valueslower_priority_levelsgreater_priority_levelsr   r  prerequisite	dependent)rf   prereqr  r%   r]   r]   r^   re   u  s   
z2TestEnum.test_enum_in_enum.<locals>.Level.__init__rc  )
rl   rm   rn   r   r(  re   r#   
DATA_CHECKDESIGN_CHECKALERTr]   r]   r]   r^   Levelm  s    
r  rr   )r   r	  r  r
  r  r  r  r  )rf   r  r]   r]   r^   test_enum_in_enumk  s   zTestEnum.test_enum_in_enumc                 C   s^   | j }| |jjd | |jjd dd }dd }| t||jd | t||jd d S )	Nr  rr   c                 S   
   || _ d S r   r  r   	new_valuer]   r]   r^   set_name  r   z*TestEnum.test_value_name.<locals>.set_namec                 S   r  r   r  r  r]   r]   r^   	set_value  r   z+TestEnum.test_value_name.<locals>.set_valueinviernors   )r  r	  r  r  r
  assertRaisesr  )rf   r  r  r  r]   r]   r^   test_value_name  s   zTestEnum.test_value_namec                 C   sj   G dd dt }| t|d |`| t|d | tt|d | tt|d | tt|jd d S )Nc                   @   $   e Zd ZdZdZdZdZdd ZdS )z0TestEnum.test_attribute_deletion.<locals>.Seasonrr   rs   rt   r~   c                 S      d S r   r]   r  r]   r]   r^   spam     z5TestEnum.test_attribute_deletion.<locals>.Season.spamN)rl   rm   rn   r  r  r   r  r  r]   r]   r]   r^   r    s    r  r  r  DRYr  )	r   r  hasattrr  r  r  r  r  r  r  r]   r]   r^   test_attribute_deletion  s   	z TestEnum.test_attribute_deletionc                 C   s"   G dd dt }| t| d S )Nc                   @   r  )z*TestEnum.test_bool_of_class.<locals>.EmptyNr  r]   r]   r]   r^   Empty  r  r  r   r  bool)rf   r  r]   r]   r^   test_bool_of_class  s   zTestEnum.test_bool_of_classc                 C   s,   G dd dt }|D ]	}| t| q
d S )Nc                   @   rp   )z+TestEnum.test_bool_of_member.<locals>.Countr   rr   rs   N)rl   rm   rn   zeror  r  r]   r]   r]   r^   Count  ry   r  r  )rf   r  r%   r]   r]   r^   test_bool_of_member  s   zTestEnum.test_bool_of_memberc                 C   s,   dd }dd }|  t| |  t| d S )Nc                  S      G dd dt } d S )Nc                   @   r  )zFTestEnum.test_invalid_names.<locals>.create_bad_class_1.<locals>.Wrongr  N)rl   rm   rn   mror]   r]   r]   r^   Wrong  r  r  r   r  r]   r]   r^   create_bad_class_1  r   z7TestEnum.test_invalid_names.<locals>.create_bad_class_1c                  S   r  )Nc                   @   r  )zFTestEnum.test_invalid_names.<locals>.create_bad_class_2.<locals>.Wrongrt   N)rl   rm   rn   
_reserved_r]   r]   r]   r^   r    r  r  r   r  r]   r]   r^   create_bad_class_2  r   z7TestEnum.test_invalid_names.<locals>.create_bad_class_2r  r   )rf   r  r  r]   r]   r^   test_invalid_names  s   zTestEnum.test_invalid_namesc                 C   s,   G dd dt }| |j | |j d S )Nc                   @   s    e Zd ZdZdZdd ZeZdS )z!TestEnum.test_bool.<locals>.LogicTFc                 S   
   t | jS r   )r  r
  r   r]   r]   r^   __bool__  r   z*TestEnum.test_bool.<locals>.Logic.__bool__N)rl   rm   rn   truefalser  __nonzero__r]   r]   r]   r^   Logic  s
    r  )r   r  r  r  r  )rf   r  r]   r]   r^   	test_bool  s   zTestEnum.test_boolc                 C   s  | j }| d|v  | |j|v  | d|v  |d}| ||v  | g |v  G dd dt}| |j|v G dd dt}| |j|v  | ||j|ju  G dd dt}| |j|v  | d	|v  | d
ddd	|v  | d
d
i|v  d S )Nr   rt   c                   @   r   )z)TestEnum.test_contains.<locals>.OtherEnumrr   rs   Nr  r]   r]   r]   r^   	OtherEnum  r   r  c                   @   r   )z+TestEnum.test_contains.<locals>.NumericEnumrr   rs   Nr  r]   r]   r]   r^   NumericEnum  r   r  c                   @   s$   e Zd Zg dZdZddddZdS )z%TestEnum.test_contains.<locals>.Wierdrr   rs   rt   rr   rs   rt   N)rl   rm   rn   r}  r{  r|  r]   r]   r]   r^   Wierd  s    r  r  rr   rs   )	r  r  r  r   r   r  r   r  r}  )rf   r  valr  r  r  r]   r]   r^   test_contains  s"   zTestEnum.test_containsc                    s     t fdd d S )Nc                      s   d j jv S Ntest)r  r   r]   r   r]   r^   r    s    z/TestEnum.test_member_contains.<locals>.<lambda>r  r   r   r]   r   r^   test_member_contains     zTestEnum.test_member_containsc                 C   s   | j }| d|jdt|j | d|jdt|j | d|jdt|j | d|jdt|j | d|jdt|j | d|jdt|j d S N{0}{0:}{0:20}{0:^20}{0:>20}{0:<20})r  r	  formatr  r?  r  r]   r]   r^   test_format_enum  s&   zTestEnum.test_format_enumc                 C   s<   G dd dt t}| t|jd | d|jd d S )Nc                   @      e Zd ZdZdZdd ZdS )z.TestEnum.test_custom_format.<locals>.TestFloatg      ?g       @c                 S      dS )NTestFloat success!r]   )rf   specr]   r]   r^   
__format__  r  z9TestEnum.test_custom_format.<locals>.TestFloat.__format__N)rl   rm   rn   r  r  r  r]   r]   r]   r^   	TestFloat  r  r  zTestFloat.oner  r  )r)  r   r	  r?  r  r  )rf   r  r]   r]   r^   test_custom_format     zTestEnum.test_custom_formatc                 C   s<   G dd dt t}| t|jd | d|jd d S )Nc                   @   r  )z5TestEnum.test_format_with_custom_str.<locals>.TestIntrr   rs   c                 S   r  Nrt   r  r   r]   r]   r^   rP    r   z=TestEnum.test_format_with_custom_str.<locals>.TestInt.__str__N)rl   rm   rn   r  r  rP  r]   r]   r]   r^   TestInt  r  r  	twotwotwor  )r!  r   r	  r?  r  r  )rf   r  r]   r]   r^   test_format_with_custom_str   r  z$TestEnum.test_format_with_custom_strc                 C   s    |  |||t| d S r   )r	  r  r?  rf   r  r%   r]   r]   r^   assertFormatIsName	  s    zTestEnum.assertFormatIsNamec                 C   ^   | j }| d|j | d|j | d|j | d|j | d|j | d|j d S r  )r(  r  r#  )rf   r(  r]   r]   r^   test_format_enum_date     zTestEnum.test_format_enum_datec                 C   r  r  )r%  r  r	  )rf   r%  r]   r]   r^   test_format_enum_float  r  zTestEnum.test_format_enum_floatc                 C   r  r  )r&  r  r  )rf   r&  r]   r]   r^   test_format_enum_int  r  zTestEnum.test_format_enum_intc                 C   r  r  )r'  r  r  )rf   r'  r]   r]   r^   test_format_enum_str'  r  zTestEnum.test_format_enum_strc                 C   s   |  ||||j d S r   )r	  r  r
  r  r]   r]   r^   assertFormatIsValue0  s   zTestEnum.assertFormatIsValuec                 C   sz   | j }| d|j | d|j | d|j | d|j | d|j | d|j | d|j | d|j d S )	Nr  r  r  r  r  r  z	{0:%Y %m}z{0:%Y %m %M:00})r$  r  r#  )rf   r$  r]   r]   r^   test_format_reprenum_date3  s   z"TestEnum.test_format_reprenum_datec                 C      | j }| d|j | d|j | d|j | d|j | d|j | d|j | d|j | d|j | d	|j d S )
Nr  r  r  r  r  r  z{0:n}z{0:5.2}z{0:f})r
  r  r	  )rf   r
  r]   r]   r^   test_format_reprenum_float>     z#TestEnum.test_format_reprenum_floatc                 C   r  )
Nr  r  r  r  r  r  z{0:+}z{0:08X}z{0:b})r  r  r  )rf   r  r]   r]   r^   test_format_reprenum_intJ  r  z!TestEnum.test_format_reprenum_intc                 C   r  r  )r  r  r  )rf   r  r]   r]   r^   test_format_reprenum_strV  r  z!TestEnum.test_format_reprenum_strc                 C   sH   | j }i }d||j< d||j< d||j< d||j< | ||j d d S )N1225031507041031)r  r  r  r  r   r	  )rf   r  datesr]   r]   r^   	test_hash_  s   



zTestEnum.test_hashc                 C   s   G dd dt }t|}| ||j|j|j|jg | |j|ju  | |jj	d | |jj	d | |d|ju  | |d|ju  | |jj
d | tdd |j D tdd	g d S )
Nc                   @   s(   e Zd ZdZdZdZd ZZdZdZ	dS )z-TestEnum.test_enum_duplicates.<locals>.Seasonr  rr   rs   rt   r~   N)
rl   rm   rn   re  r  r  r   FALLr  ANOTHER_SPRINGr]   r]   r]   r^   r  i  s    r  rt   rr   r   c                 S      g | ]\}}|j |kr|qS r]   r  r  kvr]   r]   r^   r  }  s    z1TestEnum.test_enum_duplicates.<locals>.<listcomp>r  r  )r   r  r	  r  r  r   r  r  r  r
  r  setrW  items)rf   r  r  r]   r]   r^   test_enum_duplicatesh  s$   
zTestEnum.test_enum_duplicatesc                 C   s`   G dd dt }| t||j|jg | t|j|u  | |jjd | |jjd d S )Nc                   @   rp   )z/TestEnum.test_enum_with_value_name.<locals>.Huhz
name valuerr   rs   N)rl   rm   rn   r   r  r
  r]   r]   r]   r^   r    ry   r  r  rr   )r   r	  r  r  r
  r  rl  )rf   r  r]   r]   r^   test_enum_with_value_name  s   
z"TestEnum.test_enum_with_value_namec                 C   (   G dd dt t}| |j|jk  d S )Nc                   @      e Zd ZdZde ZdS )z/TestEnum.test_intenum_from_scratch.<locals>.phyrt   rs   Nrl   rm   rn   pitaur]   r]   r]   r^   phy  rx  r  r!  r   r  r
  r  rf   r  r]   r]   r^   test_intenum_from_scratch     z"TestEnum.test_intenum_from_scratchc                 C   8   G dd dt t}G dd d|}| |j|jk  d S )Nc                   @   r  )z0TestEnum.test_intenum_inherited.<locals>.IntEnumNr  r]   r]   r]   r^   r     r  r   c                   @   r  )z,TestEnum.test_intenum_inherited.<locals>.phyrt   rs   Nr	  r]   r]   r]   r^   r    rx  r  r  )rf   r   r  r]   r]   r^   test_intenum_inherited     zTestEnum.test_intenum_inheritedc                 C   r  )Nc                   @   r  )z1TestEnum.test_floatenum_from_scratch.<locals>.phyr  rs   Nr	  r]   r]   r]   r^   r    rx  r  r)  r   r  r
  r  r  r]   r]   r^   test_floatenum_from_scratch  r  z$TestEnum.test_floatenum_from_scratchc                 C   r  )Nc                   @   r  )z4TestEnum.test_floatenum_inherited.<locals>.FloatEnumNr  r]   r]   r]   r^   	FloatEnum  r  r  c                   @   r  )z.TestEnum.test_floatenum_inherited.<locals>.phyr  rs   Nr	  r]   r]   r]   r^   r    rx  r  r  )rf   r  r  r]   r]   r^   test_floatenum_inherited  r  z!TestEnum.test_floatenum_inheritedc                 C   r  )Nc                   @   r   )z/TestEnum.test_strenum_from_scratch.<locals>.phyPiTauNr	  r]   r]   r]   r^   r    r   r  )r?  r   r  r
  r  r  r]   r]   r^   test_strenum_from_scratch  r  z"TestEnum.test_strenum_from_scratchc                 C   sB  G dd dt }| g d|j d | dd t|jD g d t|}| t|t| | t|d d	}| }t|D ][\}}|d
7 }||}| || | t	|| | |j
| | ||v  | ||d
 | | d|  k odk n   | t||u  | t|t	 | t|t qCd S )Nc                   @   s(   e Zd ZdZdZdZdZdZdZdZ	dS )	z&TestEnum.test_intenum.<locals>.WeekDayrr   rs   rt   r~   r   ra  r  N)
rl   rm   rn   SUNDAYMONDAYTUESDAY	WEDNESDAYTHURSDAYFRIDAYSATURDAYr]   r]   r]   r^   WeekDay  s    r"  )r  r  cr#  c                 S   s   g | ]}|qS r]   r]   )r  r  r]   r]   r^   r    s    z)TestEnum.test_intenum.<locals>.<listcomp>r   rr   rs   r  8SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAYrr   r   r   )r   r	  r  r   r  r  r  r  r  r!  r  r  indexrl  rP  r   )rf   r"  r  r   r  weekdayr  r]   r]   r^   test_intenum  s*   	 zTestEnum.test_intenumc                 C   sV   G dd dt }| |j|ju  | |djd | dd |j D dg d S )Nc                   @   s0   e Zd ZdZdZdZd ZZdZdZ	dZ
dZd	S )
z1TestEnum.test_intenum_duplicates.<locals>.WeekDayr%  rr   rs   rt   r~   r   ra  r  N)rl   rm   rn   re  r  r  r  TEUSDAYr  r  r   r!  r]   r]   r]   r^   r"    s    r"  rt   r  c                 S   r  r]   r  r   r]   r]   r^   r    s    
z4TestEnum.test_intenum_duplicates.<locals>.<listcomp>r)  )r   r  r)  r  r	  r  rW  r  )rf   r"  r]   r]   r^   test_intenum_duplicates  s   	z TestEnum.test_intenum_duplicatesc                 C   sn   t tjj}| t|tj t tjjd }| t t| W d    d S 1 s0w   Y  d S )Ng{Gz?)	r)  hexr{   rx   r
  assertIsfromhexr  r   )rf   rp  r]   r]   r^   test_floatenum_fromhex  s   "zTestEnum.test_floatenum_fromhexc                 C   ,   t ttrtt| jtj t| jt d S r   )rP  rq   r   r   r  rw   r   r]   r]   r^   test_pickle_enum     
zTestEnum.test_pickle_enumc                 C   r/  r   )rP  rz   r   r   r  rw   r   r]   r]   r^   test_pickle_int  r1  zTestEnum.test_pickle_intc                 C   r/  r   )rP  r{   r   r   r  rw   r   r]   r]   r^   test_pickle_float  r1  zTestEnum.test_pickle_floatc                 C   r/  r   )rP  r   r   r   r  himr   r]   r]   r^   test_pickle_enum_function  r1  z"TestEnum.test_pickle_enum_functionc                 C   r/  r   )rP  r   r   r   r  whor   r]   r]   r^   %test_pickle_enum_function_with_module  r1  z.TestEnum.test_pickle_enum_function_with_modulec                 C   s<   G dd dt }t|_ttD ]}| |j|d qd S )Nc                   @   r   )z6TestEnum.test_pickle_by_name.<locals>.ReplaceGlobalIntrr   rs   N)rl   rm   rn   r  r  r]   r]   r]   r^   ReplaceGlobalInt  r   r8  r  )r   r   __reduce_ex__r   r<   r	  r  )rf   r8  protor]   r]   r^   test_pickle_by_name  s
   zTestEnum.test_pickle_by_namec                 C   s@   t dd}t| |t d< t| jt|j t| jt| d S )N	BadPicklezdill sweet bread-n-butter)	r   rV   make_class_unpicklableglobalsr   r  r   dillr;   )rf   r<  r]   r]   r^   test_exploding_pickle  s
   


zTestEnum.test_exploding_picklec                 C   s$   G dd dt t}| |jd d S )Nc                   @   rp   )z-TestEnum.test_string_enum.<locals>.SkillLevelz'what is the sound of one hand clapping?z#why did the chicken cross the road?knock, knock!N)rl   rm   rn   master
journeyman
apprenticer]   r]   r]   r^   
SkillLevel  ry   rE  rA  )r?  r   r	  rD  )rf   rE  r]   r]   r^   test_string_enum  s   zTestEnum.test_string_enumc                 C   sR   G dd dt }| |d|ju  | t|d|ju  | |d |ju  d S )Nc                   @   r   )z-TestEnum.test_getattr_getitem.<locals>.Periodrr   rs   rt   r~   N)rl   rm   rn   morningnooneveningnightr]   r]   r]   r^   Period  r   rK  rs   rJ  rG  )r   r  rH  rc   rJ  rG  rf   rK  r]   r]   r^   test_getattr_getitem  s   zTestEnum.test_getattr_getitemc                 C   s   | j }| t|d d S )N__hash__)r  r  rc   r  r]   r]   r^   test_getattr_dunder#  r  zTestEnum.test_getattr_dunderc                 C   4   G dd dt }| t||j|j|j|jg d S )Nc                   @   r|   )z-TestEnum.test_iteration_order.<locals>.SeasonzSUMMER WINTER AUTUMN SPRINGrs   r~   rt   rr   N)rl   rm   rn   re  r  r  r   r  r]   r]   r]   r^   r  (  r   r  )r   r	  r  r  r  r   r  r  r]   r]   r^   test_iteration_order'  s
   zTestEnum.test_iteration_orderc                 C   s2   |  tt| j| jj| jj| jj| jjg d S r   )r	  r  reversedr  r  r   r  r  r   r]   r]   r^   test_iteration_order_reversed3  s   z&TestEnum.test_iteration_order_reversedc                 C   rP  )Nc                   @   s4   e Zd ZeddZeddZeddZeddZd	S )
zFTestEnum.test_iteration_order_with_unorderable_values.<locals>.Complexr  r  gQ	@rs   rr   rP   ir  N)rl   rm   rn   complexr  r  r#  dr]   r]   r]   r^   Complex;  s
    


rV  )r   r	  r  r  r  r#  rU  )rf   rV  r]   r]   r^   ,test_iteration_order_with_unorderable_values:  s
   z5TestEnum.test_iteration_order_with_unorderable_valuesc                 C   s   t dd}t|}| t|t| | t|d| | |j|j|jg| td D ]2\}}|d7 }||}| t	|j
| | || | |j| | ||v  | t||u  q.d S NSummerMonthjune july augustrt   rr   r   r  r	  r  junejulyaugustr  r  r!  r
  r  r  r  rl  rf   rY  r  r  monthr  r]   r]   r^    test_programatic_function_stringE  s"   
z)TestEnum.test_programatic_function_stringc                 C   s   t dddd}t|}| t|t| | t|d| | |j|j|jg| td dD ].\}}||}| t	|j
| | || | |j| | ||v  | t||u  q1d S )NrY  rZ  r  r   rt   r[  r_  r]   r]   r^   +test_programatic_function_string_with_startW  s    z4TestEnum.test_programatic_function_string_with_startc                 C   s   t dg d}t|}| t|t| | t|d| | |j|j|jg| td D ]2\}}|d7 }||}| t	|j
| | || | |j| | ||v  | t||u  q0d S )NrY  r\  r]  r^  rt   rZ  rr   r[  r_  r]   r]   r^   %test_programatic_function_string_listh  s"   z.TestEnum.test_programatic_function_string_listc                 C   s   t dg ddd}t|}| t|t| | t|d| | |j|j|jg| td dD ].\}}||}| t	|j
| | || | |j| | ||v  | t||u  q3d S )NrY  rd  r  rb  rt   rZ  r[  r_  r]   r]   r^   0test_programatic_function_string_list_with_startz  s    z9TestEnum.test_programatic_function_string_list_with_startc                 C   s   t dd}t|}| t|t| | t|d| | |j|j|jg| td D ]2\}}|d7 }||}| t	|j
| | || | |j| | ||v  | t||u  q.d S NrY  ))r\  rr   )r]  rs   )r^  rt   rt   rZ  rr   r[  r_  r]   r]   r^   "test_programatic_function_iterable  s(   z+TestEnum.test_programatic_function_iterablec                 C   s   t dtd}t|}| t|t| | t|d| tr,| |j|j|jg| t	d
 D ]2\}}|d7 }||}| t|j| | || | |j| | ||v  | t||u  q2d S rg  )r   dictr  r	  r  r-   r\  r]  r^  r  r  r!  r
  r  r  r  rl  r_  r]   r]   r^   #test_programatic_function_from_dict  s*   z,TestEnum.test_programatic_function_from_dictc                 C   s   t ddtd}t|}| t|t| | t|d| | |j|j|jg| td	 D ])\}}|d7 }||}| || | |j
| | ||v  | t||u  q0d S NrY  rZ  rl  rt   rr   r   r!  r  r	  r  r\  r]  r^  r  r  r  r  rl  r_  r]   r]   r^   test_programatic_function_type  s    z'TestEnum.test_programatic_function_typec                 C   s   t ddtdd}t|}| t|t| | t|d| | |j|j|jg| td	 dD ]%\}}||}| || | |j
| | ||v  | t||u  q2d S )NrY  rZ     )rl  r   rt   rm  r_  r]   r]   r^   )test_programatic_function_type_with_start  s   z2TestEnum.test_programatic_function_type_with_startc                 C   s   t dd}t|}| t|t| | t|d| | |j|j|jg| td D ])\}}|d7 }||}| || | |j	| | 
||v  | 
t||u  q.d S rX  r   r  r	  r  r\  r]  r^  r  r  r  r  rl  r_  r]   r]   r^   ,test_programatic_function_type_from_subclass  s    
z5TestEnum.test_programatic_function_type_from_subclassc                 C   s   t dddd}t|}| t|t| | t|d| | |j|j|jg| td dD ]%\}}||}| || | |j	| | 
||v  | 
t||u  q1d S )NrY  rZ  (   rb  rt   rq  r_  r]   r]   r^   7test_programatic_function_type_from_subclass_with_start  s   z@TestEnum.test_programatic_function_type_from_subclass_with_startc                 C   s   t dtd}t|}| t|t| | t|d| | |j|j|jg| ttd	 D ]2\}}|d7 }||}| t
|j| | || | |j| | ||v  | t||u  q2d S rX  r   r*   r  r	  r  r\  r]  r^  r  r  r!  r
  r  r  r  rl  r_  r]   r]   r^   !test_programatic_function_unicode  s"   z*TestEnum.test_programatic_function_unicodec                 C   s   t dtdtdtdg}t|}| t|t| | t|d| | |j|j|jg| ttd	 D ]2\}}|d7 }||}| t
|j| | || | |j| | ||v  | t||u  q9d S )NrY  r\  r]  r^  rt   rZ  rr   ru  r_  r]   r]   r^   &test_programatic_function_unicode_list
  s"   z/TestEnum.test_programatic_function_unicode_listc                 C   s   t dtddftddftddff}t|}| t|t| | t|d| | |j|j|jg| ttd	 D ]2\}}|d7 }||}| t
|j| | || | |j| | ||v  | t||u  q?d S 	NrY  r\  rr   r]  rs   r^  rt   rZ  ru  r_  r]   r]   r^   *test_programatic_function_unicode_iterable  s(    z3TestEnum.test_programatic_function_unicode_iterablec                 C   s   t dttddftddftddff}t|}| t|t| | t|d| tr;| |j|j|j	g| t
td D ]2\}}|d7 }||}| t|j| | || | |j| | ||v  | t||u  qCd S rx  )r   ri  r*   r  r	  r  r-   r\  r]  r^  r  r  r!  r
  r  r  r  rl  r_  r]   r]   r^   +test_programatic_function_from_unicode_dict1  s*   $z4TestEnum.test_programatic_function_from_unicode_dictc                 C   s   t dtdtd}t|}| t|t| | t|d| | |j|j|jg| t	td
 D ])\}}|d7 }||}| || | |j| | ||v  | t||u  q4d S rk  )r   r*   r!  r  r	  r  r\  r]  r^  r  r  r  r  rl  r_  r]   r]   r^   &test_programatic_function_unicode_typeG  s    z/TestEnum.test_programatic_function_unicode_typec                 C   s   t dtd}t|}| t|t| | t|d| | |j|j|jg| ttd	 D ])\}}|d7 }||}| || | |j
| | ||v  | t||u  q2d S rX  )r   r*   r  r	  r  r\  r]  r^  r  r  r  r  rl  r_  r]   r]   r^   4test_programatic_function_unicode_type_from_subclassX  s    z=TestEnum.test_programatic_function_unicode_type_from_subclassc                 C   s  t rtdddf}nd}t|D ]r\}}t r'|dkr'| tt|td qt|td}t|}| t	|t	| | t	|d| | |j
|j|jg| ttd D ]*\}}|d7 }||}| |j| | |j| | ||v  | t||u  qYqd S )NrY     SümmérMönthlatin1)rY  r}  rr   rZ  rt   )r-   r*   decoder  r  r   r   r  r	  r  r\  r]  r^  r  r
  r  r  rl  )rf   class_namesr  
class_namerY  r  r`  r  r]   r]   r^   (test_programmatic_function_unicode_classi  s.   z1TestEnum.test_programmatic_function_unicode_classc                 C   sV   t ttrt| tjd | tjtd | tjttdu  t| jtj d S )Nr   r   )rP  r   r   r	  r   r  rc   r   r   r]   r]   r^   test_subclassing  s   
zTestEnum.test_subclassingc                 C      dd }|  t| d S )Nc                  S   s$   G dd dt } G dd d| }d S )Nc                   @   rp   )z=TestEnum.test_extending.<locals>.bad_extension.<locals>.Colorrr   rs   rt   Nrl   rm   rn   r   r   r   r]   r]   r]   r^   r     ry   r   c                   @   rp   )zATestEnum.test_extending.<locals>.bad_extension.<locals>.MoreColorr~   r   ra  Nrl   rm   rn   rK  magentayellowr]   r]   r]   r^   	MoreColor  ry   r  r   )r   r  r]   r]   r^   bad_extension     z.TestEnum.test_extending.<locals>.bad_extensionr  rf   r  r]   r]   r^   test_extending  s   	zTestEnum.test_extendingc                 C   s:   G dd dt }| t|j|u  | |j d d S )Nc                   @   r  )z/TestEnum.test_exclude_methods.<locals>.whateverr{  r|  c                 S   
   d| j  S )Nz
no, not %sr  r   r]   r]   r^   really  r   z6TestEnum.test_exclude_methods.<locals>.whatever.reallyN)rl   rm   rn   r}  r~  r  r]   r]   r]   r^   whatever  r  r  zno, not that)r   r  rl  r  r	  r}  )rf   r  r]   r]   r^   test_exclude_methods  s   zTestEnum.test_exclude_methodsc                 C   r  )Nc                  S   s   G dd dt t} d S )Nc                   @   r  )zKTestEnum.test_wrong_inheritance_order.<locals>.wrong_inherit.<locals>.Wrongzerror before this pointN)rl   rm   rn   NotHerer]   r]   r]   r^   r    r  r  )r   r?  r  r]   r]   r^   wrong_inherit  s   z<TestEnum.test_wrong_inheritance_order.<locals>.wrong_inheritr  )rf   r  r]   r]   r^   test_wrong_inheritance_order  s   z%TestEnum.test_wrong_inheritance_orderc                 C   sT   G dd dt }G dd dt }| |j|j | |j|j | |j|j d S )Nc                   @   rp   )z2TestEnum.test_intenum_transitivity.<locals>.numberrr   rs   rt   N)rl   rm   rn   r  r  rC  r]   r]   r]   r^   number  ry   r  c                   @   rp   )z2TestEnum.test_intenum_transitivity.<locals>.numerorr   rs   rt   N)rl   rm   rn   unodostresr]   r]   r]   r^   numero  ry   r  )r   r	  r  r  r  r  rC  r  )rf   r  r  r]   r]   r^   test_intenum_transitivity  s
   z"TestEnum.test_intenum_transitivityc                 C   s   G dd dt }| |jjtu  | |jtu  G dd dtt}| |jjtu  | |jtu  G dd dt}| |jjt	u  | |jt	u  d S )Nc                   @   r   )z+TestEnum.test_introspection.<locals>.Numberd      Nr  r]   r]   r]   r^   Number  r   r  c                   @   rp   )z+TestEnum.test_introspection.<locals>.StringsoftroughhardN)rl   rm   rn   yarnropewirer]   r]   r]   r^   String  ry   r  c                   @   r   )z*TestEnum.test_introspection.<locals>.Plainwhiterr   N)rl   rm   rn   vanillar  r]   r]   r]   r^   Plain  r   r  )
r   r  r  r]  r!  r?  r   r  r  r'  )rf   r  r  r  r]   r]   r^   test_introspection  s   zTestEnum.test_introspectionc                 C   s4   G dd dt }G dd dt }| t||j d S )Nc                   @   r   )z4TestEnum.test_wrong_enum_in_call.<locals>.Monochromer   rr   Nrl   rm   rn   rN  r  r]   r]   r]   r^   
Monochrome  r   r  c                   @   r   )z0TestEnum.test_wrong_enum_in_call.<locals>.Genderr   rr   Nrl   rm   rn   malefemaler]   r]   r]   r^   Gender  r   r  )r   r  r   r  rf   r  r  r]   r]   r^   test_wrong_enum_in_call     z TestEnum.test_wrong_enum_in_callc                 C   s4   G dd dt }G dd dt}| t||j d S )Nc                   @   r   )z:TestEnum.test_wrong_enum_in_mixed_call.<locals>.Monochromer   rr   Nr  r]   r]   r]   r^   r    r   r  c                   @   r   )z6TestEnum.test_wrong_enum_in_mixed_call.<locals>.Genderr   rr   Nr  r]   r]   r]   r^   r    r   r  )r   r   r  r   r  r  r]   r]   r^   test_wrong_enum_in_mixed_call  r  z&TestEnum.test_wrong_enum_in_mixed_callc                 C   s:   G dd dt }G dd dt }| ||j|ju  d S )Nc                   @   r   )z6TestEnum.test_mixed_enum_in_call_1.<locals>.Monochromer   rr   Nr  r]   r]   r]   r^   r    r   r  c                   @   r   )z2TestEnum.test_mixed_enum_in_call_1.<locals>.Genderr   rr   Nr  r]   r]   r]   r^   r    r   r  )r   r  r  r  r  r]   r]   r^   test_mixed_enum_in_call_1     z"TestEnum.test_mixed_enum_in_call_1c                 C   s:   G dd dt }G dd dt}| ||j|ju  d S )Nc                   @   r   )z6TestEnum.test_mixed_enum_in_call_2.<locals>.Monochromer   rr   Nr  r]   r]   r]   r^   r    r   r  c                   @   r   )z2TestEnum.test_mixed_enum_in_call_2.<locals>.Genderr   rr   Nr  r]   r]   r]   r^   r    r   r  )r   r   r  r  rN  r  r]   r]   r^   test_mixed_enum_in_call_2  r  z"TestEnum.test_mixed_enum_in_call_2c                 C   s6   G dd dt }G dd d|}| t|jd d S )Nc                   @   r   )z*TestEnum.test_flufl_enum.<locals>.Fluflnumc                 S   r  r   )r!  r
  r   r]   r]   r^   __int__  r   z2TestEnum.test_flufl_enum.<locals>.Fluflnum.__int__N)rl   rm   rn   r  r]   r]   r]   r^   Fluflnum  r   r  c                   @   rp   )z0TestEnum.test_flufl_enum.<locals>.MailManOptionsrr   rs   rt   N)rl   rm   rn   option1option2option3r]   r]   r]   r^   MailManOptions  ry   r  rr   )r   r	  r!  r  )rf   r  r  r]   r]   r^   test_flufl_enum  s   zTestEnum.test_flufl_enumc                 C   s2   G dd dt }| t|d | t|jd d S )Nc                   @   rp   )z0TestEnum.test_no_such_enum_member.<locals>.Colorrr   rs   rt   Nr  r]   r]   r]   r^   r     ry   r   r~   
chartreuse)r   r  r   KeyError__getitem__r   r]   r]   r^   test_no_such_enum_member  s   z!TestEnum.test_no_such_enum_memberc                 C   s&   G dd dt }| t|jd d S )Nc                   @   s    e Zd ZdZdZdZdd ZdS )z%TestEnum.test_new_repr.<locals>.Colorrr   rs   rt   c                 S   r  )Nz!don't you just love shades of %s?r  r   r]   r]   r^   __repr__  r   z.TestEnum.test_new_repr.<locals>.Color.__repr__N)rl   rm   rn   r   r   r   r  r]   r]   r]   r^   r     
    r   z#don't you just love shades of blue?)r   r	  r  r   r   r]   r]   r^   test_new_repr  s
   zTestEnum.test_new_reprc                 C   s8   G dd dt }G dd dt|}| t|jd d S )Nc                   @   r   )z,TestEnum.test_inherited_repr.<locals>.MyEnumc                 S   r  )NzMy name is %s.r  r   r]   r]   r^   r    r   z5TestEnum.test_inherited_repr.<locals>.MyEnum.__repr__N)rl   rm   rn   r  r]   r]   r]   r^   MyEnum  r   r  c                   @   rp   )z/TestEnum.test_inherited_repr.<locals>.MyIntEnumrr   rs   rt   N)rl   rm   rn   r}  r{  theotherr]   r]   r]   r^   	MyIntEnum
  ry   r  zMy name is that.)r   r!  r	  r  r{  )rf   r  r  r]   r]   r^   test_inherited_repr  s   zTestEnum.test_inherited_reprc                    s4   G  fdddt   dtfi } dtfi }d S )Nc                       s   e Zd Z fddZ  ZS )z3TestEnum.test_multiple_mixin_mro.<locals>.auto_enumc           
         s  |}|  ||i }t|dr$|jD ]}|| ||< qdd | D }ng }| D ]\}}t|r8|| |||< q*|  ||i }d}	|D ]}|| ||< qH|jD ]}|| }|dkra|	}n|}	|	d7 }	|||< qT| D ]\}}||jvr||vr|||< qpt| 	| |||S )N_member_namesc                 S   s   g | ]	}t |r|qS r]   )rV   r  )r  r  r]   r]   r^   r    s    zOTestEnum.test_multiple_mixin_mro.<locals>.auto_enum.__new__.<locals>.<listcomp>r   r]   rr   )
__prepare__r  r  keysr  rV   r  r   rd   r(  )
metaclsr,  bases	classdictoriginal_dict	temp_dictr  sundersr  r  )rk   	auto_enumr]   r^   r(    s:   







z;TestEnum.test_multiple_mixin_mro.<locals>.auto_enum.__new__)rl   rm   rn   r(  ro   r]   r  rj   r^   r        r  AutoNumberedEnumAutoIntEnum)r   r   r   )rf   r  r  r]   r  r^   test_multiple_mixin_mro  s    z TestEnum.test_multiple_mixin_mroc                    s   dd d  G  fdddt dtfi  tjtdtd}|d W d    n1 s5w   Y  G fd	d
d
 }| |j	|j
|j|jgt| | |j	jd | |j
jd | |jjd | |jjd d S )Nc                  W   s   t | dkr
| d S | S )Nrr   r   )r  )rg   r]   r]   r^   identityO  s   z0TestEnum.test_meta_reconfigure.<locals>.identityc                       s@   e Zd Zed	ddZ fddZd	 fdd	Z  ZS )
z4TestEnum.test_meta_reconfigure.<locals>.JSONEnumMetaNr]   c                 S   s   i S r   r]   )r  r,  r  initr   settingsr]   r]   r^   r  X     z@TestEnum.test_meta_reconfigure.<locals>.JSONEnumMeta.__prepare__c                    s   t  | j|  d S r   )rd   re   )r,  rg   rh   )JSONEnumMetark   r]   r^   re   \  r   z=TestEnum.test_meta_reconfigure.<locals>.JSONEnumMeta.__init__c              	      s  dd l }g } d urd|vrtdd|vrtdd|vr"td|d}	t|	ttfs1|	f}	|d}
|d}t|}||}W d    n1 sOw   Y  |D ][}g }||	d  }|	dd  D ]}|| }qft|
	 D ]0\}\}}t|ttfs|f}||d  }|dd  D ]}|| }q|d ur||}|
| qst|}|
|| f qVt| |||||}t|	 }|jd	d
 d |D ]\}}|||< q|D ]\}}|||< qt| | ||||||S )Nr   _filez_file is required_namez_name is required_valuez_value is requiredrr   c                 S   s    | d d dkrd| fS d| fS )Nr   r  rr   r]   )rn  r]   r]   r^   r    s     zNTestEnum.test_meta_reconfigure.<locals>.JSONEnumMeta.__new__.<locals>.<lambda>)key)jsonr   poprP  tupler  rX  loadsortedr  r   rd   r  sortr(  )r  r,  r  clsdictr  r   r  r  members	name_spec
value_specfilef	json_datadatar  r  pieceorder
value_pathfuncr
  	enum_dictr  )JSONEnumr  rk   r  r]   r^   r(  _  sV   








z<TestEnum.test_meta_reconfigure.<locals>.JSONEnumMeta.__new__)NNr]   )rl   rm   rn   classmethodr  re   r(  ro   r]   )r  r  r  rj   r^   r  V  s
    r  JsonEnumztest_json.jsonwun  [{"name":"Afghanistan","alpha-2":"AF","country-code":"004","notes":{"description":"pretty"}},{"name":"Åland Islands","alpha-2":"AX","country-code":"248","notes":{"description":"serene"}},{"name":"Albania","alpha-2":"AL","country-code":"008","notes":{"description":"exciting"}},{"name":"Algeria","alpha-2":"DZ","country-code":"012","notes":{"description":"scarce"}}]c                       s6   e Zd ZdZ ZdZdddd fddd	d fd
ZdS )z/TestEnum.test_meta_reconfigure.<locals>.Countryz"abbr code country_name descriptionalpha-2)r  Nzcountry-codec                 S   s   t | S r   )r!  )r#  r]   r]   r^   r    r  z8TestEnum.test_meta_reconfigure.<locals>.Country.<lambda>r  N)notesr  c                 S   s   |   S r   )title)r  r]   r]   r^   r    r  )rr   rs   rt   r~   N)rl   rm   rn   r  r  r  r  r]   )	test_filer]   r^   Country  s    


r  AF   AlbaniaScarce)r   r   ospathr   tempdirrX  writer	  r  AXALDZr  abbrr@  country_namer  )rf   r  r  r]   )r  r  r  r  r^   test_meta_reconfigureM  s    9 zTestEnum.test_meta_reconfigurec                    s   G  fdddt  G dd d t}| |jtju  | t|j|j d  t d< |t d<  dd}| |d t	| j|d | |jj
d t	| j|j d S )	Nc                       H   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:TestEnum.test_subclasses_with_getnewargs.<locals>.NamedIntNamedIntc                 W   P   |}t |dk rtd|d |dd  }}tj| g|R  }||_||_|S Nrr    name and value must be specifiedr   r  r   r!  r(  _intname_argsr,  rg   r  r  rf   r]   r]   r^   r(       zBTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__new__c                 S      | j S r   )r  r   r]   r]   r^   __getnewargs__     zITestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__getnewargs__c                 S   r  r   r  r   r]   r]   r^   rl        zCTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__name__c                 S      dt | j| jt| f S Nz
%s(%r, %s)rl  rl   r!  r  r   r]   r]   r^   r       
zCTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__repr__c                 S   &   t }|j}|jtu r|| S || S r   r!  rP  __objclass__r'  r  rf   basebase_strr]   r]   r^   rP    
   

zBTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__str__c                    >   t | t | }t|  rt| r d| j|jf |S |S Nz	(%s + %s)r!  rP  rl   rf   othertempr  r]   r^   __add__     zBTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__add__N)	rl   rm   rn   r(  r  r  r  rP  r,  r]   r+  r]   r^   r        	
	r  c                   @      e Zd ZdZdZdZdS )z5TestEnum.test_subclasses_with_getnewargs.<locals>.NEINEIzthe-xrr   zthe-yrs   Nrl   rm   rn   xyr]   r]   r]   r^   r0    ry   r0  NamedInt('(the-x + the-y)', 3)r  r   rs   r!  r   r  r(  r	  r  r4  r5  r>  r   r
  rf   r0  NI5r]   r+  r^   test_subclasses_with_getnewargs  s   '


z(TestEnum.test_subclasses_with_getnewargsc                       G  fdddt  G dd d t}| |jtju  | t|j|j d  t d< |t d<  dd}| |d t	| j|d | |jj
d t	| j|j d S )	Nc                       r  )z6TestEnum.test_subclasses_with_reduce.<locals>.NamedIntr  c                 W   r  r  r  r  r]   r]   r^   r(    r  z>TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__new__c                 S      | j | jfS r   rk   r  r   r]   r]   r^   
__reduce__     zATestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__reduce__c                 S   r  r   r  r   r]   r]   r^   rl     r  z?TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__name__c                 S   r  r  r  r   r]   r]   r^   r    r  z?TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__repr__c                 S   r  r   r  r!  r]   r]   r^   rP    r$  z>TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__str__c                    r%  r&  r'  r(  r+  r]   r^   r,  	  r-  z>TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__add__N)	rl   rm   rn   r(  r>  r  r  rP  r,  r]   r+  r]   r^   r    r.  r  c                   @   r/  )z1TestEnum.test_subclasses_with_reduce.<locals>.NEIr0  r1  r2  Nr3  r]   r]   r]   r^   r0  
	  ry   r0  r6  r  r   rs   r7  r8  r]   r+  r^   test_subclasses_with_reduce     '


z$TestEnum.test_subclasses_with_reducec                    r;  )	Nc                       r  )z9TestEnum.test_subclasses_with_reduce_ex.<locals>.NamedIntr  c                 W   r  r  r  r  r]   r]   r^   r(  	  r  zATestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__new__c                 S   r<  r   r=  rf   r:  r]   r]   r^   r9  &	  r?  zGTestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__reduce_ex__c                 S   r  r   r  r   r]   r]   r^   rl   (	  r  zBTestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__name__c                 S   r  r  r  r   r]   r]   r^   r  +	  r  zBTestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__repr__c                 S   r  r   r  r!  r]   r]   r^   rP  0	  r$  zATestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__str__c                    r%  r&  r'  r(  r+  r]   r^   r,  9	  r-  zATestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__add__N)	rl   rm   rn   r(  r9  r  r  rP  r,  r]   r+  r]   r^   r  	  r.  r  c                   @   r/  )z4TestEnum.test_subclasses_with_reduce_ex.<locals>.NEIr0  r1  r2  Nr3  r]   r]   r]   r^   r0  B	  ry   r0  r6  r  r   rs   r7  r8  r]   r+  r^   test_subclasses_with_reduce_ex	  rA  z'TestEnum.test_subclasses_with_reduce_exc                    s   G  fdddt  G dd d t}| |jtju  | t|j|j d  t d< |t d<  dd}| |d | |jj	d t
| jt|j t
| jt| d S )	Nc                       @   e Zd ZdZdd Zedd Z dd Zdd	 Z fd
dZdS )zHTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedIntr  c                 W   P   |}|d |dd  }}t |dkrtdtj| g|R  }||_||_|S Nr   rr   r  r  r  r]   r]   r^   r(  U	     zPTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__new__c                 S   r  r   r  r   r]   r]   r^   rl   ^	  r  zQTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__name__c                 S   r  r  r  r   r]   r]   r^   r  a	  r  zQTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__repr__c                 S   r  r   r  r!  r]   r]   r^   rP  f	  r$  zPTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__str__c                    r%  r&  r'  r(  r+  r]   r^   r,  o	  r-  zPTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__add__Nrl   rm   rn   r(  r  r  rP  r,  r]   r+  r]   r^   r  S	      	
	r  c                   @   r/  )zCTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NEIr0  r1  r2  Nr3  r]   r]   r]   r^   r0  x	  ry   r0  r6  r  r   rs   )r!  r   r  r(  r	  r  r4  r5  r>  r
  r   r  r   r;   r8  r]   r+  r^   -test_subclasses_without_direct_pickle_supportR	  s   %


z6TestEnum.test_subclasses_without_direct_pickle_supportc                    s   G  fdddt  G dd d t}| |jtju  | t|j|j d  t d< |t d<  dd}| |d | |jj	d t
| j|j t
| j| d S )	Nc                       rD  )zSTestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedIntr  c                 W   rE  rF  r  r  r]   r]   r^   r(  	  rG  z[TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__new__c                 S   r  r   r  r   r]   r]   r^   rl   	  r  z\TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__name__c                 S   r  r  r  r   r]   r]   r^   r  	  r  z\TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__repr__c                 S   r  r   r  r!  r]   r]   r^   rP  	  r$  z[TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__str__c                    r%  r&  r'  r(  r+  r]   r^   r,  	  r-  z[TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__add__NrH  r]   r+  r]   r^   r  	  rI  r  c                   @   s    e Zd ZdZdZdZdd ZdS )zNTestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NEIr0  r1  r2  c                 S   s   t | j| jffS r   )rc   rk   _name_rB  r]   r]   r^   r9  	  r6  z\TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NEI.__reduce_ex__N)rl   rm   rn   r4  r5  r9  r]   r]   r]   r^   r0  	  r  r0  r6  r  r   rs   )r!  r   r  r(  r	  r  r4  r5  r>  r
  r   r8  r]   r+  r^   8test_subclasses_without_direct_pickle_support_using_name	  s   %


zATestEnum.test_subclasses_without_direct_pickle_support_using_namec                 C   sb   G dd dt t}| t|j|u  | t|jt  | |jd |t	 d< t
| j|j d S )Nc                   @   s   e Zd ZdZdZdZdZdS )z/TestEnum.test_tuple_subclass.<locals>.SomeTuple	SomeTuple)rr   zfor the money)rs   zfor the showrt   zfor the musicN)rl   rm   rn   r  r  rw  r]   r]   r]   r^   rM  	  r   rM  rN  )r  r   r  rl  r  rP  r  r	  rw  r>  r   )rf   rM  r]   r]   r^   test_tuple_subclass	  s   
zTestEnum.test_tuple_subclassc                 C   s   G dd dt }G dd d|}| t|ddt|df  | t||j|j|jg tr>| ttt	|g d d S d S )Nc                   @   r  )zCTestEnum.test_inherited_new_from_enhanced_enum.<locals>.AutoNumber2c                 S   s"   t | jd }t| }||_|S r  r  rW  r'  r(  r)  r,  r
  r   r]   r]   r^   r(  	  s   
zKTestEnum.test_inherited_new_from_enhanced_enum.<locals>.AutoNumber2.__new__c                 S   r  r   )r!  r)  r   r]   r]   r^   r  	  r   zKTestEnum.test_inherited_new_from_enhanced_enum.<locals>.AutoNumber2.__int__N)rl   rm   rn   r(  r  r]   r]   r]   r^   AutoNumber2	  s    rR  c                   @      e Zd ZdZdZdZdZdS )z=TestEnum.test_inherited_new_from_enhanced_enum.<locals>.Colorr   r]   Nrl   rm   rn   re  r   r   r   r]   r]   r]   r^   r   	  r   r   rt   +wrong number of elements: %d (should be %d)r  )
r   r	  r  r  r   r   r   r.   mapr!  )rf   rR  r   r]   r]   r^   %test_inherited_new_from_enhanced_enum	  s   z.TestEnum.test_inherited_new_from_enhanced_enumc                 C   sb   G dd dt }G dd d|}| t|ddt|df  |j |j |j | |jd d S )Nc                   @   r   )z@TestEnum.test_inherited_new_from_mixed_enum.<locals>.AutoNumber3c                 S   s$   t | jd }t| |}||_|S )N   )r  rW  r!  r(  r)  rQ  r]   r]   r^   r(  	  s   zHTestEnum.test_inherited_new_from_mixed_enum.<locals>.AutoNumber3.__new__Nr_  r]   r]   r]   r^   AutoNumber3	  r   rY  c                   @   rS  )z:TestEnum.test_inherited_new_from_mixed_enum.<locals>.Colorr   r]   NrT  r]   r]   r]   r^   r   	  r   r   rt   rU     )r   r	  r  r   r   r   )rf   rY  r   r]   r]   r^   "test_inherited_new_from_mixed_enum	  s   z+TestEnum.test_inherited_new_from_mixed_enumc                 C   sB   G dd d}G dd dt }| | |j | |j|  d S )Nc                   @   r   )z+TestEnum.test_equality.<locals>.AlwaysEqualc                 S   r  )NTr]   rf   r)  r]   r]   r^   __eq__
  r  z2TestEnum.test_equality.<locals>.AlwaysEqual.__eq__N)rl   rm   rn   r]  r]   r]   r]   r^   AlwaysEqual 
  r   r^  c                   @   r  )z,TestEnum.test_equality.<locals>.OrdinaryEnumrr   N)rl   rm   rn   r  r]   r]   r]   r^   OrdinaryEnum
  r  r_  )r   r	  r  )rf   r^  r_  r]   r]   r^   test_equality	  s   zTestEnum.test_equalityc                 C   s   G dd dt }| t||j|j|j|j|jg | |j|jk | |j|jk | |j|jk  | |j|jk d S )Nc                   @   r   )z*TestEnum.test_ordered_mixin.<locals>.Gradez	A B C D Fr   r~   rt   rs   rr   N)	rl   rm   rn   re  r  r  r  r  r  r]   r]   r]   r^   Grade	
  r   ra  )	r   r	  r  r  r  r  r  r  r  )rf   ra  r]   r]   r^   test_ordered_mixin
  s   $zTestEnum.test_ordered_mixinc                 C      G dd dt }| |j|d | t |j W d    n1 s$w   Y  | t |d  W d    d S 1 s>w   Y  d S )Nc                   @   $   e Zd ZdZdZdZedd ZdS )z/TestEnum.test_missing_deprecated.<locals>.Labelr   rr   rs   c                 S   r  r   AnyAppler,  r  r]   r]   r^   	_missing_
  r  z9TestEnum.test_missing_deprecated.<locals>.Label._missing_N)rl   rm   rn   rf  RedApple
GreenAppler  rh  r]   r]   r]   r^   Label
      rk  r~   redappler   r	  rf  r  r  rm  r  rf   rk  r]   r]   r^   test_missing_deprecated
     
"z TestEnum.test_missing_deprecatedc                 C   rc  )Nc                   @   rd  )z$TestEnum.test_missing.<locals>.Labelr   rr   rs   c                 S   r  r   re  r,  r
  r]   r]   r^   _missing_value_*
  r  z4TestEnum.test_missing.<locals>.Label._missing_value_Nrl   rm   rn   rf  ri  rj  r  rs  r]   r]   r]   r^   rk  &
  rl  rk  r~   rm  rn  ro  r]   r]   r^   test_missing%
  rq  zTestEnum.test_missingc                 C   s   G dd dt }|d  | t |j W d    n1 sw   Y  | t |d W d    d S 1 s9w   Y  d S )Nc                   @       e Zd ZdZdZedd ZdS )z)TestEnum.test_missing_name.<locals>.Labelrr   rs   c                 S   s(   | D ]}|j  | kr|  S qd S r   r  lower)r,  r  r%   r]   r]   r^   _missing_name_8
  s
   z8TestEnum.test_missing_name.<locals>.Label._missing_name_Nrl   rm   rn   ri  rj  r  ry  r]   r]   r]   r^   rk  5
  
    rk  rm  )r   r  r  rm  r   ro  r]   r]   r^   test_missing_name4
  s   	
"zTestEnum.test_missing_namec                 C   sZ   G dd dt }| |j|d | t |d  W d    d S 1 s&w   Y  d S )Nc                   @   rd  )z4TestEnum.test_missing_value_bad_input.<locals>.Labelr   rr   rs   c                 S   r  r   re  rr  r]   r]   r^   rs  I
  r  zDTestEnum.test_missing_value_bad_input.<locals>.Label._missing_value_Nrt  r]   r]   r]   r^   rk  E
  rl  rk  r~   T)r   r	  rf  r  r  ro  r]   r]   r^   test_missing_value_bad_inputD
  s
   
"z%TestEnum.test_missing_value_bad_inputc                 C   s   G dd dt }| t |j W d    n1 sw   Y  | t |d W d    n1 s4w   Y  | t |d  W d    d S 1 sNw   Y  d S )Nc                   @   rv  )z4TestEnum.test_missing_name_bad_return.<locals>.Labelrr   rs   c                 S   r  r   r]   rg  r]   r]   r^   ry  U
  r  zCTestEnum.test_missing_name_bad_return.<locals>.Label._missing_name_Nrz  r]   r]   r]   r^   rk  R
  r{  rk  rm  )r   r  r  rm  r   r  ro  r]   r]   r^   test_missing_name_bad_returnQ
  s   

"z%TestEnum.test_missing_name_bad_returnc                 C   r  )Nc                  S   s4   G dd dt } G dd d| }G dd d|}d S )Nc                   @   r   )z>TestEnum.test_extending2.<locals>.bad_extension.<locals>.Shadec                 S   s   t | j d S r   )r  r  r   r]   r]   r^   shadec
  s   zDTestEnum.test_extending2.<locals>.bad_extension.<locals>.Shade.shadeNrl   rm   rn   r  r]   r]   r]   r^   Shadeb
  r   r  c                   @   rp   )z>TestEnum.test_extending2.<locals>.bad_extension.<locals>.Colorrr   rs   rt   Nr  r]   r]   r]   r^   r   e
  ry   r   c                   @   rp   )zBTestEnum.test_extending2.<locals>.bad_extension.<locals>.MoreColorr~   r   ra  Nr  r]   r]   r]   r^   r  i
  ry   r  r   )r  r   r  r]   r]   r^   r  a
  s   z/TestEnum.test_extending2.<locals>.bad_extensionr  r  r]   r]   r^   test_extending2`
  s   zTestEnum.test_extending2c                 C   sF   G dd dt }G dd d|}G dd d|}| |j d d S )Nc                   @   r   )z'TestEnum.test_extending3.<locals>.Shadec                 S   r  r   r  r   r]   r]   r^   r  q
  r  z-TestEnum.test_extending3.<locals>.Shade.shadeNr  r]   r]   r]   r^   r  p
  r   r  c                   @   r   )z'TestEnum.test_extending3.<locals>.Colorc                 S   r  )Nz%s hexlified!r  r   r]   r]   r^   r+  t
  r   z+TestEnum.test_extending3.<locals>.Color.hexN)rl   rm   rn   r+  r]   r]   r]   r^   r   s
  r   r   c                   @   rp   )z+TestEnum.test_extending3.<locals>.MoreColorr~   r   ra  Nr  r]   r]   r]   r^   r  v
  ry   r  z5 hexlified!)r   r	  r  r+  )rf   r  r   r  r]   r]   r^   test_extending3o
  s   zTestEnum.test_extending3c                 C   s   G dd dt }| t||j|j|j|jg | |jjd | |jjd | |j|v  | |d|j | |d |j | |jjd d S )Nc                   @   r|   )z'TestEnum.test_extending5.<locals>.Colorzred green blue valuerr   rs   rt   r~   N)rl   rm   rn   r   r   r   r   r
  r]   r]   r]   r^   r   }
  r   r   r
  r~   rr   )	r   r	  r  r   r   r   r
  r  r  r   r]   r]   r^   test_extending5|
  s    zTestEnum.test_extending5r  Continuez!Request received, please continuee   zSwitching Protocolsz.Switching to new protocol; obey Upgrade header)f   
Processingc                 C   r  )Nc                  S   s$   G dd dt } G dd dt }d S )Nc                   @   rp   )zCTestEnum.test_no_duplicates.<locals>.bad_duplicates.<locals>.Color1rr   rs   rt   Nr  r]   r]   r]   r^   Color1
  ry   r  c                   @      e Zd ZdZdZdZdZdS )zCTestEnum.test_no_duplicates.<locals>.bad_duplicates.<locals>.Color2rr   rs   rt   N)rl   rm   rn   r   r   r   grener]   r]   r]   r^   Color2
  r   r  )r   )r  r  r]   r]   r^   bad_duplicates
  r  z3TestEnum.test_no_duplicates.<locals>.bad_duplicatesr  )rf   r  r]   r]   r^   test_no_duplicates
  s   
zTestEnum.test_no_duplicatesc                 C   s&   G dd dt }G dd dtt }d S )Nc                   @   rp   )z0TestEnum.test_no_duplicates_kinda.<locals>.Sillyrr   r  rt   Nrl   rm   rn   r  r  r  r]   r]   r]   r^   Silly
  ry   r  c                   @   r   )z2TestEnum.test_no_duplicates_kinda.<locals>.Sillierrr   rs   rt   r~   Nrl   rm   rn   singler  tripler
  r]   r]   r]   r^   Sillier
  r   r  )r   r   rf   r  r  r]   r]   r^   test_no_duplicates_kinda
  s   z!TestEnum.test_no_duplicates_kindac                 C   :   G dd dt }| t|jjdd | |jjd d S )Nc                   @   s@   e Zd ZdZdZdZdZdZdZdZ	dZ
d	d
 Zedd ZdS )z"TestEnum.test_init.<locals>.PlanetITf|D    
BAQX4E    WAgoEg    TXAg	Dg    (IAgcEg   Ag[\h}Eg    ，Ag#'?TQEg   _xAgJ-UEg    wAc                 S   s   || _ || _d S r   massradius)rf   r  r  r]   r]   r^   re   
  s   
z+TestEnum.test_init.<locals>.Planet.__init__c                 S      d}|| j  | j| j  S NyдW=r  rf   Gr]   r]   r^   surface_gravity
     z2TestEnum.test_init.<locals>.Planet.surface_gravityN)rl   rm   rn   MERCURYVENUSEARTHMARSJUPITERSATURNURANUSNEPTUNEre   r  r  r]   r]   r]   r^   Planet
  s    r  rs   皙#@r  r   r	  roundr  r  r
  rf   r  r]   r]   r^   	test_init
  s   zTestEnum.test_initc                 C   sf   G dd dt t}G dd d|}| |jjd | |jjd | |jjd | |jjd d S )	Nc                   @   $   e Zd ZdZdd Zedd ZdS )zATestEnum.test_init_and_shadowing_attribute.<locals>.SelectionEnumdb userc                 _   s*   t | j}t| |d }||_||_|S r   )r  rW  r?  r(  _countr)  r,  rg   rh   countr   r]   r]   r^   r(  
  s
   
zITestEnum.test_init_and_shadowing_attribute.<locals>.SelectionEnum.__new__c                 _   
   | f| S r   r]   r  r   r  r  rg   rh   r]   r]   r^   _generate_next_value_
  r  zWTestEnum.test_init_and_shadowing_attribute.<locals>.SelectionEnum._generate_next_value_Nrl   rm   rn   r  r(  staticmethodr  r]   r]   r]   r^   SelectionEnum
  
    r  c                   @   rp   )zDTestEnum.test_init_and_shadowing_attribute.<locals>.DeviceTypeSourcezuser systemUser controlledSystem controlledN)rl   rm   rn   r   usersystemr]   r]   r]   r^   DeviceTypeSource
  ry   r  r  r  r  r  )r?  r   r	  r  dbr  )rf   r  r  r]   r]   r^   !test_init_and_shadowing_attribute
  s   z*TestEnum.test_init_and_shadowing_attributec                 C   sf   G dd dt }G dd d|}| t||j|j|jg | |jjdg | |dg|j d S )Nc                   @   r   )z6TestEnum.test_nonhash_value.<locals>.AutoNumberInAListc                 S   s$   t | jd g}t| }||_|S r  rP  rQ  r]   r]   r^   r(  
  s   
z>TestEnum.test_nonhash_value.<locals>.AutoNumberInAList.__new__Nr_  r]   r]   r]   r^   AutoNumberInAList
  r   r  c                   @   rS  )z1TestEnum.test_nonhash_value.<locals>.ColorInAListr   r]   NrT  r]   r]   r]   r^   ColorInAList
  r   r  rr   )r   r	  r  r   r   r   r
  )rf   r  r  r]   r]   r^   test_nonhash_value
  s
   zTestEnum.test_nonhash_valuec                 C   st   G dd dt }| t||j|j|j|jg | |j|j | |jj	d | |j
j	d | |jj	d d S )Nc                   @   s8   e Zd ZdZe Ze Ze ZdZe Z	e Z
e ZdS )z>TestEnum.test_number_reset_and_order_cleanup.<locals>.ConfusedzONE TWO THREE UNO DOS TRES FOURrr   N)rl   rm   rn   r   r"   r  r  r  UNODOSTRESFOURr]   r]   r]   r^   Confused
  s    
r  rs   rt   r~   )r   r	  r  r  r  r  r  r,  r  r)  r  rf   r  r]   r]   r^   #test_number_reset_and_order_cleanup
  s    	z,TestEnum.test_number_reset_and_order_cleanupc                 C   s^   G dd dt t}G dd d|}| |jd | |d|j | t||j|jg d S )Nc                   @   r   )zHTestEnum.test_conflicting_types_resolved_in_new.<locals>.LabelledIntEnumc                 W   s$   |\}}t | |}||_||_|S r   )r!  r(  labelr)  )r,  rg   r
  r  r   r]   r]   r^   r(  
  
   zPTestEnum.test_conflicting_types_resolved_in_new.<locals>.LabelledIntEnum.__new__Nr_  r]   r]   r]   r^   LabelledIntEnum
  r   r  c                   @   r   )zETestEnum.test_conflicting_types_resolved_in_new.<locals>.LabelledList)rr   Unprocessed)rs   zPayment CompleteN)rl   rm   rn   unprocessedpayment_completer]   r]   r]   r^   LabelledList
  r   r  rr   )r!  r   r	  r  r  r  )rf   r  r  r]   r]   r^   &test_conflicting_types_resolved_in_new
  s
   z/TestEnum.test_conflicting_types_resolved_in_newc                 C   `   G dd dt }| t||j|j|jg | |jjd | |jjd | |jjd d S )Nc                   @   r   )z(TestEnum.test_auto_number.<locals>.Colorred blue greenNrl   rm   rn   r   r"   r   r   r   r]   r]   r]   r^   r     r  r   rr   rs   rt   r   r	  r  r   r   r   r
  r   r]   r]   r^   test_auto_number  
   zTestEnum.test_auto_numberc                 C   r  )Nc                   @   r#  )z&TestEnum.test_auto_name.<locals>.Colorr  c                 S      | S r   r]   r  r   r  lastr]   r]   r^   r    r  z<TestEnum.test_auto_name.<locals>.Color._generate_next_value_N)	rl   rm   rn   r   r  r"   r   r   r   r]   r]   r]   r^   r     s    
r   r   r   r   r  r   r]   r]   r^   test_auto_name  s
   zTestEnum.test_auto_namec                 C   sp   G dd dt }G dd d|}| t||j|j|jg | |jjd | |jjd | |jjd d S )Nc                   @   r   )z5TestEnum.test_auto_name_inherit.<locals>.AutoNameEnumc                 S   r  r   r]   r  r]   r]   r^   r    r  zKTestEnum.test_auto_name_inherit.<locals>.AutoNameEnum._generate_next_value_Nrl   rm   rn   r  r]   r]   r]   r^   AutoNameEnum  r   r  c                   @   r   )z.TestEnum.test_auto_name_inherit.<locals>.Colorr  Nr  r]   r]   r]   r^   r   !  r  r   r   r   r   r  )rf   r  r   r]   r]   r^   test_auto_name_inherit  s   zTestEnum.test_auto_name_inheritc                 C   s$   G dd dt }| |jjd d S )Nc                   @      e Zd ZdZdZe ZdS )z)TestEnum.test_auto_garbage.<locals>.Colorred bluer   Nrl   rm   rn   r   r   r"   r   r]   r]   r]   r^   r   -      
r   rr   )r   r	  r   r
  r   r]   r]   r^   test_auto_garbage,  r  zTestEnum.test_auto_garbagec                 C   r  )Nc                   @   s   e Zd ZdZdZdZe ZdS )z3TestEnum.test_auto_garbage_corrected.<locals>.Colorr  r   rs   N)rl   rm   rn   r   r   r   r"   r   r]   r]   r]   r^   r   4  s
    
r   r   rs   rt   r  r   r]   r]   r^   test_auto_garbage_corrected3  r  z$TestEnum.test_auto_garbage_correctedc                 C   sv   G dd dt }| t||j|j|jg | dd |D g d G dd dt }| |j|j|jgt| d S )Nc                   @   s"   e Zd ZdZe ZefZe ZdS )z/TestEnum.test_duplicate_auto.<locals>.MoreDupesA B CNrl   rm   rn   r   r"   r  r  r  r]   r]   r]   r^   	MoreDupesA  r  r  c                 S   r  r]   r  r  r]   r]   r^   r  G  r  z0TestEnum.test_duplicate_auto.<locals>.<listcomp>)rr   )rr   rs   c                   @   &   e Zd ZdZe  ZZe Ze ZdS )z+TestEnum.test_duplicate_auto.<locals>.Dupesrs  N	rl   rm   rn   r   r"   r  primeror  rw  r]   r]   r]   r^   DupesI  
    

r  )	r   r	  r  r  r  r  r  r  rw  )rf   r  r  r]   r]   r^   test_duplicate_auto?  s
    zTestEnum.test_duplicate_autoc                 C      G dd dt }G dd d|}| t||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                   @   r  )z9TestEnum.test_auto_value_with_auto.<locals>.SelectionEnumr  c                 _   s0   t | j}t| }||_||_|\|_|_|S r   )r  rW  r'  r(  r  r)  r  r  r  r]   r]   r^   r(  T  s   

zATestEnum.test_auto_value_with_auto.<locals>.SelectionEnum.__new__c                 _   r  r   r]   r  r]   r]   r^   r  [  r  zOTestEnum.test_auto_value_with_auto.<locals>.SelectionEnum._generate_next_value_Nr  r]   r]   r]   r^   r  R  s
    r  c                   @   s    e Zd ZdZedZedZdS )z0TestEnum.test_auto_value_with_auto.<locals>.Test	this thatr~  r|  N)rl   rm   rn   r   r"   r}  r{  r]   r]   r]   r^   Test_  s    r  r}  r}  r~  r~  r{  r{  r|  r|  	r   r	  r  r}  r{  r  r
  r  r  rf   r  r  r]   r]   r^   test_auto_value_with_autoP  s   z"TestEnum.test_auto_value_with_autoc                 C   r  )Nc                   @   r  )z>TestEnum.test_auto_value_with_autovalue.<locals>.SelectionEnumr  c                 _   s$   t | j}t| }||_||_|S r   )r  rW  r'  r(  r  r)  r  r]   r]   r^   r(  r  s
   

zFTestEnum.test_auto_value_with_autovalue.<locals>.SelectionEnum.__new__c                 _   r  r   r]   r  r]   r]   r^   r  x  r  zTTestEnum.test_auto_value_with_autovalue.<locals>.SelectionEnum._generate_next_value_Nr  r]   r]   r]   r^   r  p  r  r  c                   @   rp   )z5TestEnum.test_auto_value_with_autovalue.<locals>.Testr   r~  r|  N)rl   rm   rn   r   r}  r{  r]   r]   r]   r^   r  |  ry   r  r}  r  r~  r{  r  r|  r  r  r]   r]   r^   test_auto_value_with_autovaluen  s   z'TestEnum.test_auto_value_with_autovaluec                 C   sd   G dd dt }| |jj|jj|jjfddddif | |jj|jj|jjfdddd	if d S )
Nc                   @   s8   e Zd ZdZedddidZedddidZdd	 Zd
S )z)TestEnum.test_auto_and_kwds.<locals>.ItemA Br  r   T)sizereqr  Fc                 S   s    t | }||_||_||_|S r   )r'  r(  r)  r	  r
  )r,  r
  r	  r
  r   r]   r]   r^   r(    s
   
z1TestEnum.test_auto_and_kwds.<locals>.Item.__new__Nrl   rm   rn   r   r"   r  r  r(  r]   r]   r]   r^   Item  s
    r  rr   r  r   Trs   r  F)r   r	  r  r
  r	  r
  r  rf   r  r]   r]   r^   test_auto_and_kwds  s   (,zTestEnum.test_auto_and_kwdsc                 C   s    t di }| t|d d S )NFoor   )rV   r   r	  r  )rf   emptyr]   r]   r^   test_empty_with_functional_api  s   z'TestEnum.test_empty_with_functional_apic                 C   r  )Nc                   @   s<   e Zd 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'TestEnum.test_auto_init.<locals>.Planetzmass radiusr  r  r  r  r  r  r  r  c                 S   r  r  r  r  r]   r]   r^   r    r  z7TestEnum.test_auto_init.<locals>.Planet.surface_gravityN)rl   rm   rn   r  r  r  r  r  r  r  r  r  r  r  r]   r]   r]   r^   r    s    r  rs   r  r  r  r  r]   r]   r^   test_auto_init  s   zTestEnum.test_auto_initc                 C   st   G dd dt }| |jjd | |jjd | |jjd | |jjd | |jjd | |jjd d S )	Nc                   @   r   )z1TestEnum.test_auto_init_with_value.<locals>.Colorz
value, rgb)rr   rr   r   r   )rs   r   rr   r   )rt   r   r   rr   N)rl   rm   rn   r  REDBLUEGREENr]   r]   r]   r^   r     r   r   rr   rs   rt   r  r  r  )r   r	  r  r
  r  r  rgbr   r]   r]   r^   test_auto_init_with_value  s   z"TestEnum.test_auto_init_with_valuec                 C   s4   G dd dt }| |j|ju  | t|d d S )Nc                   @   s   e Zd ZeZdZdZdS )z'TestEnum.test_noalias.<locals>.Settingsrr   N)rl   rm   rn   r   
_settings_r   rojor]   r]   r]   r^   Settings  ry   r  rr   )r   r  r   r  r  r   )rf   r  r]   r]   r^   test_noalias  s   zTestEnum.test_noaliasc                 C   sR   G dd dt t}| |jd | |jd | |jjd | |jjd d S )Nc                   @   r   )z*TestEnum.test_auto_and_init.<locals>.Field
TYPE STARTvalue __doc__Char, Date, Logical, etc.Field offset in recordN)rl   rm   rn   r   r  TYPESTARTr]   r]   r]   r^   Field  r   r%  rr   rs   r!  r"  )r!  r   r	  r#  r$  r   rf   r%  r]   r]   r^   test_auto_and_init  s
   zTestEnum.test_auto_and_initc                 C   sP   G dd dt }| |jd | |jd | |jjd | |jjd d S )Nc                   @   r|   )z+TestEnum.test_auto_and_start.<locals>.Fieldr  r   r   r!  r"  N)rl   rm   rn   r   _start_r  r#  r$  r]   r]   r]   r^   r%    r   r%  r   rr   r!  r"  )r   r	  r#  r$  r   r&  r]   r]   r^   test_auto_and_start  s
   zTestEnum.test_auto_and_startc                 C   s   G dd dt t}| |jd | |jd | |jd | |jd | |jjd | |jjd | |jjd	 | |jjd
 d S )Nc                   @   r   )z:TestEnum.test_auto_and_init_and_some_values.<locals>.FieldTYPE START BLAH BELCHr   r!  r"  r   	test blah
test belchN	rl   rm   rn   r   r  r#  r$  BLAHBELCHr]   r]   r]   r^   r%    r   r%  rr   rs   r   ra  r!  r"  r,  r-  )r!  r   r	  r#  r$  r/  r0  r   r&  r]   r]   r^   "test_auto_and_init_and_some_values  s   z+TestEnum.test_auto_and_init_and_some_valuesc                 C   D   |  td G dd dtt}W d    d S 1 sw   Y  d S )Nz8Field\.BLAH: number of fields provided do not match initc                   @   r   )zFTestEnum.test_auto_and_init_w_value_and_too_many_values.<locals>.Fieldr*  r   )rr   r!  )rs   r"  )r   ra  r,  )r  r-  Nr.  r]   r]   r]   r^   r%    r   r%  )ra   r   r!  r   r&  r]   r]   r^   .test_auto_and_init_w_value_and_too_many_values     "z7TestEnum.test_auto_and_init_w_value_and_too_many_valuesc                 C   s   G dd dt t}| |jd | |jd | |jd | |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 d S )Nc                   @   r   )zBTestEnum.test_auto_and_init_and_some_complex_values.<locals>.Fieldr*  zvalue __doc__ help)r!  !fields composed of character data)r"  #where the data starts in the record)r   r,  	some help)r-  some more helpNr.  r]   r]   r]   r^   r%    r   r%  rr   rs   r   ra  r!  r"  r,  r-  r5  r6  r7  r8  )	r!  r   r	  r#  r$  r/  r0  r   helpr&  r]   r]   r^   *test_auto_and_init_and_some_complex_values  s   z3TestEnum.test_auto_and_init_and_some_complex_valuesc                 C   s   G dd dt }G d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                   @   r   )z7TestEnum.test_auto_and_init_inherited.<locals>.AutoEnumr   r   N)rl   rm   rn   r(  r  r]   r]   r]   r^   AutoEnum  r   r;  c                   @   r|   )z4TestEnum.test_auto_and_init_inherited.<locals>.Fieldr*  r!  r"  r+  r-  N)rl   rm   rn   r   r#  r$  r/  r0  r]   r]   r]   r^   r%    r   r%  r   rr   r   ra  r!  r"  r,  r-  )r   r	  r#  r$  r/  r0  r   )rf   r;  r%  r]   r]   r^   test_auto_and_init_inherited  s   z%TestEnum.test_auto_and_init_inheritedc                 C   r2  )Nz_value_ not set in __new__c                   @   s8   e Zd ZdZdd Zdd Zdd ZdZd	Zd
Z	dZ
dS )z3TestEnum.test_missing_value_error.<locals>.Combinedvalue sequencec                 S   r  r   sequencer  r]   r]   r^   r  %      z<TestEnum.test_missing_value_error.<locals>.Combined.<lambda>c                 W   sH   t | |}d|v r|dd\}}|d}n|}d }||_||_|S )N(rr   z ))r?  r(  r  stripfis_namesegment)r,  r
  rg   r#   rD  rE  r]   r]   r^   r(  '  s   z;TestEnum.test_missing_value_error.<locals>.Combined.__new__c                 S      d| j j| jf S N<%s.%s>rk   rl   rK  r   r]   r]   r^   r  3     z<TestEnum.test_missing_value_error.<locals>.Combined.__repr__)zAn$(1,2)r   )zAn$(3,2)rr   )zAn$(5,1)rs   )zBn$rt   N)rl   rm   rn   r  r   r(  r  key_type
company_idr@  r  r]   r]   r]   r^   Combined"  s    rM  )ra   r   r?  r   )rf   rM  r]   r]   r^   test_missing_value_error   r4  z!TestEnum.test_missing_value_errorc                 C   sN   G dd dt j}| |j|jgt| | |jjd | |jjd d S )Nc                   @   s(   e Zd ZdZe Zee B ZdZdS )z(TestEnum.test_auto_and_enum.<locals>.Fooza b crs   N)	rl   rm   rn   r   rV   r"   r  r  r#  r]   r]   r]   r^   r  =  s
    r  rr   rt   )rV   r   r	  r  r#  r  r
  r  )rf   r  r]   r]   r^   test_auto_and_enum<  s   zTestEnum.test_auto_and_enumc                 C   4   G dd dt }G dd d|}| |jjd d S )Nc                   @   r   )z1TestEnum.test_multiple_arg_auto.<locals>.AutoNamec                 _   r  r   r]   r  r   r  r  rg   rh   r]   r]   r^   r  I  r   zGTestEnum.test_multiple_arg_auto.<locals>.AutoName._generate_next_value_Nr  r]   r]   r]   r^   AutoNameH  r   rR  c                   @   s$   e Zd ZdZeddZeddZdS )z/TestEnum.test_multiple_arg_auto.<locals>.Planetvalue mass radiusr  r  r  r  Nrl   rm   rn   r  r"   r  r  r]   r]   r]   r^   r  L  s    
r  r  r   r	  r  r
  rf   rR  r  r]   r]   r^   test_multiple_arg_autoG     zTestEnum.test_multiple_arg_autoc                 C   rP  )Nc                   @   r   )z3TestEnum.test_auto_w_multiple_arg.<locals>.AutoNamec                 _   s   |r| f| S | S r   r]   rQ  r]   r]   r^   r  T  s   
zITestEnum.test_auto_w_multiple_arg.<locals>.AutoName._generate_next_value_Nr  r]   r]   r]   r^   rR  S  r   rR  c                   @   s(   e Zd ZdZe ddfZe ddfZdS )z1TestEnum.test_auto_w_multiple_arg.<locals>.PlanetrS  r  r  r  r  NrT  r]   r]   r]   r^   r  Z  s    r  r  rU  rV  r]   r]   r^   test_auto_w_multiple_argR  s   z!TestEnum.test_auto_w_multiple_argc                 C   rP  )Nc                   @   r   )z1TestEnum.test_auto_gnv_and_init.<locals>.AutoNamec                 _   r  r   r]   rQ  r]   r]   r^   r  b  r   zGTestEnum.test_auto_gnv_and_init.<locals>.AutoName._generate_next_value_Nr  r]   r]   r]   r^   rR  a  r   rR  c                   @   rp   )z/TestEnum.test_auto_gnv_and_init.<locals>.PlanetrS  r  r  N)rl   rm   rn   r  r  r  r]   r]   r]   r^   r  e  ry   r  r  rU  rV  r]   r]   r^   test_auto_gnv_and_init`  rX  zTestEnum.test_auto_gnv_and_initc                 C   s  G dd dt }| |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 | 
|d|j | 
|d|j | 
|d|j | 
|d|j | 
|d|j | 
|d|j | 
|d	|j | 
|d
|j | 
|d|j	 | 
|d|j	 | 
|d|j	 | 
|d|j	 d S )Nc                   @   $   e Zd ZdZdZeZdZdZdZ	dS )z:TestEnum.test_MultiValue_with_init_wo_value.<locals>.Colorcolor r g br   r   rr   rs   rt   r   r~   r   ra  r   r  r   r  N
rl   rm   rn   r  r   r$   r  r   r   r   r]   r]   r]   r^   r     r   r   r   rr   rs   rt   r   r~   r   ra  r   r  r   r  )r   r	  r   r
  r   rgr  r   r   r,  r   r]   r]   r^   "test_MultiValue_with_init_wo_value  s8   z+TestEnum.test_MultiValue_with_init_wo_valuec                 C   s  G dd dt }| |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 | 	|d|j | 	|d|j | 	|d|j | 	|d|j | 	|d|j | 	|d|j | 	|d	|j | 	|d
|j | 	|d|j | 	|d|j | 	|d|j | 	|d|j d S )Nc                   @   r[  )z9TestEnum.test_MultiValue_with_init_w_value.<locals>.Colorzvalue r g br   r]  r^  r_  Nr`  r]   r]   r]   r^   r     r   r   r   rr   rs   rt   r   r~   r   ra  r   r  r   r  )
r   r	  r   r
  ra  rb  r  r   r   r,  r   r]   r]   r^   !test_MultiValue_with_init_w_value  s2   z*TestEnum.test_MultiValue_with_init_w_valuec                 C   s  G dd dt }| |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 | 
|d|j | 
|d|j | 
|d|j | 
|d|j | 
|d|j | 
|d|j | 
|d	|j | 
|d
|j | 
|d|j | 
|d|j | 
|d|j	 | 
|d|j	 | 
|d|j	 | 
|d|j	 | 
|d|j	 d S )Nc                   @   r[  )zGTestEnum.test_MultiValue_with_init_wo_value_w_autonumber.<locals>.Colorr\  r   )r   r  r  ro  )r   rs  2   <   )r   F   P   Z   Nr`  r]   r]   r]   r^   r     r   r   rr   r   r  r  ro  rs   r   rs  re  rf  rt   r   rg  rh  ri  )r   r	  r   r
  r   ra  rb  r  r   r   r,  r   r]   r]   r^   /test_MultiValue_with_init_wo_value_w_autonumber  s>   z8TestEnum.test_MultiValue_with_init_wo_value_w_autonumberc                 C   sh   G dd dt }| |jjd | |jjd | |jjd | |d|j | |d|j d S )Nc                   @   s(   e Zd ZeefZdZdZdZdZ	dZ
dS )zETestEnum.test_multivalue_and_autonumber_wo_init_wo_value.<locals>.Dayone two threer  )21r  )22r  )23rC  N)rl   rm   rn   r$   r   r  r   r(  r  r  rC  r]   r]   r]   r^   Day  s    ro  r  r   r  rl  r  )r   r	  r  r
  r  rC  )rf   ro  r]   r]   r^   /test_multivalue_and_autonumber_wo_init_wo_value  s   z8TestEnum.test_multivalue_and_autonumber_wo_init_wo_valuec                 C   s   G dd dt }| |jjd | |jjd | |jjd | |jjd | |jjd | |jjd | |d|j | |d	|j d S )
Nc                   @   sF   e Zd ZeefZdZdZdZdZ	e
 dfZe
 dfZdZe
 dfZd	S )
zKTestEnum.test_multivalue_and_autonumber_wo_init_w_some_value.<locals>.Colorz#BLACK RED BLUE YELLOW GREEN MAGENTAr  )rP   Text0)Text1Text2Text3)Text4Text5N)rl   rm   rn   r$   r   r  r   r  BLACKr  r"   r  YELLOWr  MAGENTAr]   r]   r]   r^   r     s    

r   rP   rr  iirv  irt  )	r   r	  ry  r
  r  r  rz  r  r{  r   r]   r]   r^   3test_multivalue_and_autonumber_wo_init_w_some_value  s   
z<TestEnum.test_multivalue_and_autonumber_wo_init_w_some_valuec                 C   sP   G dd dt }| t G dd d|}W d    d S 1 s!w   Y  d S )Nc                   @   s   e Zd ZeZdS )zBTestEnum.test_combine_new_settings_with_old_settings.<locals>.AutoN)rl   rm   rn   r   r  r]   r]   r]   r^   Auto  r  r}  c                   @   s   e Zd Ze Ze ZdZdS )zHTestEnum.test_combine_new_settings_with_old_settings.<locals>.AutoUniquerr   N)rl   rm   rn   r"   r/  BLUHICKr]   r]   r]   r^   
AutoUnique  s    r  )r   r  r   )rf   r}  r  r]   r]   r^   +test_combine_new_settings_with_old_settings  s   "z4TestEnum.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'TestEnum.test_timedelta.<locals>.Periodz3
            different lengths of time
            zvalue periodzPeriod i   dayzday_%dr   r  weekzweek_%dr  ro  r`  zmonth_%dN)rl   rm   rn   r   r  r   r  _ignore_varsrK  r   r  day_1OneDayweek_1OneWeekr]   r]   r]   r^   rK    s    rK  r  r  )r8   r   r  r  r  rP  r  rL  r]   r]   r^   test_timedelta  s
   zTestEnum.test_timedeltac                 C   (   G dd dt }| |j|jd  d S )Nc                   @   4   e Zd ZeG dd deZeG dd deZdS )z!TestEnum.test_skip.<locals>.enumAc                   @   r   )z'TestEnum.test_skip.<locals>.enumA.enumBr  r  Nrl   rm   rn   elementAelementBr]   r]   r]   r^   enumB/      r  c                   @   r   )z'TestEnum.test_skip.<locals>.enumA.enumCr#  rU  Nrl   rm   rn   elementCelementDr]   r]   r]   r^   enumC3  r  r  N)rl   rm   rn   r    r   r  r  r]   r]   r]   r^   enumA.  
    r  r  r   r,  r  r0  rf   r  r]   r]   r^   	test_skip-     	zTestEnum.test_skipc                 C   r  )Nc                   @   r  )z&TestEnum.test_nonmember.<locals>.enumAc                   @   r   )z,TestEnum.test_nonmember.<locals>.enumA.enumBr  r  Nr  r]   r]   r]   r^   r  ;  r  r  c                   @   r   )z,TestEnum.test_nonmember.<locals>.enumA.enumCr#  rU  Nr  r]   r]   r]   r^   r  ?  r  r  N)rl   rm   rn   r&   r   r  r  r]   r]   r]   r^   r  :  r  r  r  r  r  r]   r]   r^   test_nonmember9  r  zTestEnum.test_nonmemberc                 C   sb   G dd dt }| |j|jgt| | ttg|j | |dd | |dd d S )Nc                   @   s<   e Zd ZdZeeZeeZe	dd Z
dd Zdd ZdS )	z:TestEnum.test_member_with_external_functions.<locals>.Funczan_int a_strc                 S      dd t | D S )Nc                 S   r  r]   r  r  r]   r]   r^   r  L  r  zTTestEnum.test_member_with_external_functions.<locals>.Func.types.<locals>.<listcomp>r  r  r]   r]   r^   typesJ     z@TestEnum.test_member_with_external_functions.<locals>.Func.typesc                 S   rF  rG  rk   rl   r  r   r]   r]   r^   r  M  rJ  zCTestEnum.test_member_with_external_functions.<locals>.Func.__repr__c                 _      | j |i |S r   r  rf   rg   rh   r]   r]   r^   __call__O  r6  zCTestEnum.test_member_with_external_functions.<locals>.Func.__call__N)rl   rm   rn   r   r%   r!  an_intr?  a_strr   r  r  r  r]   r]   r]   r^   FuncF  s    
r  r  BlahBlah)r   r	  r  r  r  r!  r?  r  rf   r  r]   r]   r^   #test_member_with_external_functionsE  s
   z,TestEnum.test_member_with_external_functionsc                 C   sh   G dd dt }| |j|jgt| | |jj|jjg|j | | d | |dd d S )Nc                   @   sD   e Zd ZdZedd Zedd Zedd Zdd	 Z	d
d Z
dS )z:TestEnum.test_member_with_internal_functions.<locals>.Funcz	haha hehec                   S   r  )Nhahar]   r]   r]   r]   r^   r  Z  r  z?TestEnum.test_member_with_internal_functions.<locals>.Func.hahac                 S   s   d|  S )Nzhehe -- what a name!  %s!r]   r  r]   r]   r^   hehe]  s   z?TestEnum.test_member_with_internal_functions.<locals>.Func.hehec                 S   r  )Nc                 S   r  r]   r  r  r]   r]   r^   r  b  r  zTTestEnum.test_member_with_internal_functions.<locals>.Func.types.<locals>.<listcomp>r  r  r]   r]   r^   r  `  r  z@TestEnum.test_member_with_internal_functions.<locals>.Func.typesc                 S   rF  rG  r  r   r]   r]   r^   r  c  rJ  zCTestEnum.test_member_with_internal_functions.<locals>.Func.__repr__c                 _   r  r   r  r  r]   r]   r^   r  e  r6  zCTestEnum.test_member_with_internal_functions.<locals>.Func.__call__N)rl   rm   rn   r   r%   r  r  r   r  r  r  r]   r]   r]   r^   r  X  s    


r  r  r  zhehe -- what a name!  BlahBlah!)r   r	  r  r  r  r
  r  r  r]   r]   r^   #test_member_with_internal_functionsW  s
   z,TestEnum.test_member_with_internal_functionsc                 C   sH   G dd dt }| |jd | tdt|dd | tdt|d d S )Nc                   @   s   e Zd ZedZedZdS )z9TestEnum.test_constantness_of_constants.<locals>.Universei!	@r  N)rl   rm   rn   r   r  r  r]   r]   r]   r^   Universen  s    r  r  cannot rebind constantr  r  cannot delete constant)r   r	  r  ra   r  r  r  rf   r  r]   r]   r^   test_constantness_of_constantsm  s   z'TestEnum.test_constantness_of_constantsc                 C   s6   G dd dt }| |jd | |jd|j  d S )Nc                   @   s    e Zd ZedZede ZdS )z=TestEnum.test_math_and_stuff_with_constants.<locals>.Universer  rs   N)rl   rm   rn   r   r  r	  r]   r]   r]   r^   r  v  s    r  r  rs   )r   r	  r  r	  r  r]   r]   r^   "test_math_and_stuff_with_constantsu  s   z+TestEnum.test_math_and_stuff_with_constantsc                 C   s`   G dd dt }| t||j|j|j|jg | t|j|j|jg | |j|jv  d S )Nc                   @   s4   e Zd ZdZe Ze Ze Ze Ze	eeB Z
dS )z:TestEnum.test_constant_with_auto_is_updated.<locals>.Fruitzapple banana lemon orangeN)rl   rm   rn   r   r"   appler   lemonoranger   CitrusTypesr]   r]   r]   r^   r   }  s    r   )	r   r	  r  r  r   r  r  r  r  )rf   r   r]   r]   r^   "test_constant_with_auto_is_updated|  s    z+TestEnum.test_constant_with_auto_is_updatedc                 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 )5TestEnum.test_order_as_function.<locals>.TestSequencezvalue, sequencec                 S   r  r   r>  r%   r]   r]   r^   r    rA  >TestEnum.test_order_as_function.<locals>.TestSequence.<lambda>An$(1,6)r   An$(7,2)rr   An$(9,4)rs   	Hn$(13,6)rt   	Cn$(19,3)r~   Zn$(1,1)r   Bn(2,1)ra  Fnr  Rn$(5,1)r   Sn$(6,1)r  Qn$(7,2)r  Nrl   rm   rn   r  r   item_idrL  warehouse_nocompanyrK  	availablecontract_itemsales_categorygl_categorywarehouse_category	inv_unitsr]   r]   r]   r^   TestSequence      r  r  r  r   rL  r  rr   r  r  rs   r  r  rt   rK  r  r~   r  r  r   r  r  ra  r  r  r  r  r  r   r  r  r  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 r  r  r  r]   r]   r^   r       
 r  r  r  r  r  r  r  r  r  r  r  r  N)rl   rm   rn   r   r  rL  r  r  rK  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  r   r>  r  r]   r]   r^   r    rA  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  r   r>  r  r]   r]   r^   r    rA  r  r  r  r  r  r  r  r  r  r  r  r  N)rl   rm   rn   r  r   r  r  r  rL  r  r  r  r  rK  r  r  r]   r]   r]   r^   r    r  )r   r  r	  r?  r  r  r
  rL  r  r  rK  r  r  r  r  r  r  r  r   )rf   r  r  r%   tsr]   r]   r^   test_order_as_function  s   $zTestEnum.test_order_as_functionc                 C   sX  G dd dt }G dd d|}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% d S )&Nc                   @   rs  )z;TestEnum.test_order_as_function_in_subclass.<locals>.Parentr=  c                 S   r  r   r>  r@  r]   r]   r^   r  	  rA  zDTestEnum.test_order_as_function_in_subclass.<locals>.Parent.<lambda>N)rl   rm   rn   r  r   r]   r]   r]   r^   Parent  rx  r  c                   @   s8   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S )z:TestEnum.test_order_as_function_in_subclass.<locals>.Childr  r  r  r  r  r  r  r  r  r  r  N)rl   rm   rn   r  rL  r  r  rK  r  r  r  r  r  r  r]   r]   r]   r^   Child  s    r  r  r  r   rL  r  rr   r  r  rs   r  r  rt   rK  r  r~   r  r  r   r  r  ra  r  r  r  r  r  r   r  r  r  r  r  r  )r   r  r	  r?  r  r  r
  rL  r  r  rK  r  r  r  r  r  r  )rf   r  r  r  r%   r  r]   r]   r^   "test_order_as_function_in_subclass  sN   z+TestEnum.test_order_as_function_in_subclassc                 C   s@  G dd dt }G dd dt }G dd dt}G dd dt}G d	d
 d
|t}| |jjd | |jjd | |jjd | |jd | t|jd G dd
 d
||t}| |jjd | |jjd | |jjd | |jd | t|jddt|jdf  G dd
 d
||t}| |jjd | |jjd | |jjd | |jd | t|jddt|jdf  G dd d||t}| |jjd | |jjd | |jjd | t|jddt|jdf  | |j	 d G dd d||t}| |jjd | |jjd | |jjd | t|jddt|jdf  | |j	 d | |j
 d G dd d|||}| |jjd | |jjd | |jjd | t|jddt|jdf  | |j	 d | |j
 d G dd d|||}	| |	jjd | |	jjd | |	jjd | t|	jddt|jdf  | |	j	 d | |	j
 d G dd d|t||}
| |
jjd | |
jjd | |
jjd | t|
jddt|jdf  | |
j	 d | |	j
 d | t|
t d S ) Nc                   @   r  )z.TestEnum.test_multiple_mixin.<locals>.MaxMixinc                 S   s   t | }|| _|S r   )r  MAX)r,  maxr]   r]   r^   r  B  s   z2TestEnum.test_multiple_mixin.<locals>.MaxMixin.MAXN)rl   rm   rn   r   r  r]   r]   r]   r^   MaxMixinA  r  r  c                   @   r   )z.TestEnum.test_multiple_mixin.<locals>.StrMixinc                 S   
   | j  S r   rK  rx  r   r]   r]   r^   rP  H  r   z6TestEnum.test_multiple_mixin.<locals>.StrMixin.__str__Nrl   rm   rn   rP  r]   r]   r]   r^   StrMixinG  r   r  c                   @   r   )z.TestEnum.test_multiple_mixin.<locals>.SomeEnumc                 S   r  )Nbooyahr]   r   r]   r]   r^   behaviorK  r  z7TestEnum.test_multiple_mixin.<locals>.SomeEnum.behaviorN)rl   rm   rn   r  r]   r]   r]   r^   SomeEnumJ  r   r  c                   @   r  )z1TestEnum.test_multiple_mixin.<locals>.AnotherEnumc                 S   r  )Nnuhuh!r]   r   r]   r]   r^   r  N  r  z:TestEnum.test_multiple_mixin.<locals>.AnotherEnum.behaviorc                 S   r  )N
what's up?r]   r   r]   r]   r^   socialP  r  z8TestEnum.test_multiple_mixin.<locals>.AnotherEnum.socialN)rl   rm   rn   r  r  r]   r]   r]   r^   AnotherEnumM      r  c                   @   r   z+TestEnum.test_multiple_mixin.<locals>.ColorRED GREEN BLUENrl   rm   rn   r   r"   r  r  r  r]   r]   r]   r^   r   R  r  r   rr   rs   rt   
Color.BLUEc                   @   r   r  r  r]   r]   r]   r^   r   \  r  r   z%r is not %rc                   @   r   r  r  r]   r]   r]   r^   r   f  r  c                   @   r   )z/TestEnum.test_multiple_mixin.<locals>.CoolColorr  Nr  r]   r]   r]   r^   	CoolColorp  r  r  r  c                   @   r   )z1TestEnum.test_multiple_mixin.<locals>.CoolerColorr  Nr  r]   r]   r]   r^   CoolerColorz  r  r  r  r  c                   @   r   )z2TestEnum.test_multiple_mixin.<locals>.CoolestColorr  Nr  r]   r]   r]   r^   CoolestColor  r  r  c                   @   r   )z3TestEnum.test_multiple_mixin.<locals>.ConfusedColorr  Nr  r]   r]   r]   r^   ConfusedColor  r  r  c                   @   r   )z3TestEnum.test_multiple_mixin.<locals>.ReformedColorr  Nr  r]   r]   r]   r^   ReformedColor  r  r  )r'  r   r	  r  r
  r  r  r  r?  r  r  r   r  
issubclassr!  )rf   r  r  r  r  r   r  r  r  r  r  r]   r]   r^   test_multiple_mixin@  sr   """""""zTestEnum.test_multiple_mixinc                 C   s<   t G dd dt}G dd dt}t G dd d|}d S )Nc                   @   rp   )z9TestEnum.test_multiple_inherited_mixin.<locals>.Decision1REVERT
REVERT_ALLRETRYNrl   rm   rn   r  r  r  r]   r]   r]   r^   	Decision1      r  c                   @   r  )z6TestEnum.test_multiple_inherited_mixin.<locals>.MyEnumNr  r]   r]   r]   r^   r    r  r  c                   @   rp   )z9TestEnum.test_multiple_inherited_mixin.<locals>.Decision2r  r  r  Nr  r]   r]   r]   r^   	Decision2  r  r  )r   r   )rf   r  r  r  r]   r]   r^   test_multiple_inherited_mixin  s
   z&TestEnum.test_multiple_inherited_mixinc                 C   s4   G dd dt }| |jjd | |jjd d S )Nc                   @   s   e Zd Zdd ZdZdZdS )z-TestEnum.test_value_auto_assign.<locals>.Somec                 S   
   t | S r   r'  r(  )r,  r  r]   r]   r^   r(    r   z5TestEnum.test_value_auto_assign.<locals>.Some.__new__rr   rs   N)rl   rm   rn   r(  r4  r5  r]   r]   r]   r^   Some  s    r  rr   rs   )r   r	  r4  r
  r5  )rf   r  r]   r]   r^   test_value_auto_assign  s   zTestEnum.test_value_auto_assignc                    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,TestEnum.test_enum_of_types.<locals>.MyTypesN)	rl   rm   rn   r!  r  r)  r  r?  r  r]   r]   r]   r^   MyTypes  ry   r  c                   @   r  )z(TestEnum.test_enum_of_types.<locals>.FooNr  r]   r]   r]   r^   r    r  r  c                   @   r  )z(TestEnum.test_enum_of_types.<locals>.BarNr  r]   r]   r]   r^   Bar  r  r  c                       s   e Zd ZZ ZdS )z-TestEnum.test_enum_of_types.<locals>.MyTypes2N)rl   rm   rn   r  r  r]   )r  r  r]   r^   MyTypes2  r   r  c                   @   r  )z5TestEnum.test_enum_of_types.<locals>.SpamEnumNotInnerNr  r]   r]   r]   r^   SpamEnumNotInner  r  r  c                          e Zd Z ZdS )z-TestEnum.test_enum_of_types.<locals>.SpamEnumN)rl   rm   rn   r  r]   )r  r]   r^   SpamEnum  r  r  N)r   r	  r  r
  r!  r  r)  r  r?  r  r  r  )rf   r  r  r  r]   )r  r  r  r^   test_enum_of_types  s   zTestEnum.test_enum_of_typesc                 C      G dd dt }| t|j| | |jjd | |jjjjd | t|jj|jjj|jjj	g | t||j|j
|jg d S )Nc                   @   s,   e Zd ZdZdZdZdZG dd deZdS )zETestEnum.test_nested_classes_in_enum_do_become_members.<locals>.Outer	a b InnerOuterrr   rs   c                   @   r/  )zKTestEnum.test_nested_classes_in_enum_do_become_members.<locals>.Outer.InnerOuter.Innerr  rX  Nrl   rm   rn   r  barr]   r]   r]   r^   Inner  ry   r  Nrl   rm   rn   r   r  r  r   r  r]   r]   r]   r^   r    s    r  rr   r  r   r  rP  r  r	  r  r
  r  r  r  r  rf   r  r]   r]   r^   -test_nested_classes_in_enum_do_become_members  s   	
z6TestEnum.test_nested_classes_in_enum_do_become_membersc                 C   r  )Nc                   @   s(   e Zd ZdZdZdZG dd deZdS )zLTestEnum.test_really_nested_classes_in_enum_do_become_members.<locals>.Outerr  rr   rs   c                   @   r   )zRTestEnum.test_really_nested_classes_in_enum_do_become_members.<locals>.Outer.Innerr  rX  Nr  r]   r]   r]   r^   r    r   r  Nr  r]   r]   r]   r^   r    s
    r  rr   r  r  r  r]   r]   r^   4test_really_nested_classes_in_enum_do_become_members  s   
z=TestEnum.test_really_nested_classes_in_enum_do_become_membersc                 C   ~   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 )2Support locally-defined nested classes using @skipc                   @   s,   e Zd ZdZdZdZeG dd deZdS )zITestEnum.test_nested_classes_in_enum_are_skipped_with_skip.<locals>.Outerr  rr   rs   c                   @   r/  )zOTestEnum.test_nested_classes_in_enum_are_skipped_with_skip.<locals>.Outer.Innerr  r  rX  Nr  r]   r]   r]   r^   r  
  r  r  Nrl   rm   rn   r  r  r    r   r  r]   r]   r]   r^   r    s    r  rr   r  Nr   r  rP  r  rl  r	  r  r
  r  r  r  r  r  r]   r]   r^   1test_nested_classes_in_enum_are_skipped_with_skip  s   	
z:TestEnum.test_nested_classes_in_enum_are_skipped_with_skipc                 C   r   )r!  c                   @   s(   e Zd ZdZdZeG dd deZdS )zPTestEnum.test_really_nested_classes_in_enum_are_skipped_with_skip.<locals>.Outerrr   rs   c                   @   r   )zVTestEnum.test_really_nested_classes_in_enum_are_skipped_with_skip.<locals>.Outer.Innerr  rX  Nr  r]   r]   r]   r^   r     r  r  Nr"  r]   r]   r]   r^   r    s
    r  rr   r  Nr#  r  r]   r]   r^   8test_really_nested_classes_in_enum_are_skipped_with_skip  s   
zATestEnum.test_really_nested_classes_in_enum_are_skipped_with_skipc                 C   s:   G dd dt }| |j|du  | |j| u  d S )Nc                   @   s(   e Zd ZdZdZdZdZedd ZdS )z2TestEnum.test_enum_call_without_arg.<locals>.Colorr   rr   rs   rt   c                 S   s   |t u r| jS d S r   )r'   rN  rr  r]   r]   r^   rs  7  s   zBTestEnum.test_enum_call_without_arg.<locals>.Color._missing_value_N)	rl   rm   rn   rN  r   r   r   r  rs  r]   r]   r]   r^   r   1  s    r   rr   )r   r  r   rN  r   r]   r]   r^   test_enum_call_without_arg0  s   
z#TestEnum.test_enum_call_without_argc                    <  G  fdddt  G fddd G dd d}G dd d|}jd	 d |jd	 d |jd
 d |jd	d |jd
d G dd d }G dd d|}G dd d|}|jd	 d |jd	d |jd
 d |jd	d |jd
d d S )Nc                           e Zd Z fddZ  ZS )z+TestEnum.test_init_subclass.<locals>.MyEnumc                    4   t  | jdi | | jdd d| _d S N_testFr  r]   rd   __init_subclass__r  r0  get_test1r,  rh   r  rk   rf   r]   r^   r-  @     
z=TestEnum.test_init_subclass.<locals>.MyEnum.__init_subclass__rl   rm   rn   r-  ro   r]   r  rf   rj   r^   r  ?      r  c                          e Zd Z fddZ  ZS )z.TestEnum.test_init_subclass.<locals>.TheirEnumc                        t  | jdi | d| _d S N	TheirEnumr]   rd   r-  _test2r0  r9  rk   r]   r^   r-  F     
z@TestEnum.test_init_subclass.<locals>.TheirEnum.__init_subclass__r3  r]   r9  rj   r^   r9  E  r  r9  c                   @   r   )z.TestEnum.test_init_subclass.<locals>.WhoseEnumc                 [   r  r   r]   r0  r]   r]   r^   r-  J  r  z@TestEnum.test_init_subclass.<locals>.WhoseEnum.__init_subclass__Nrl   rm   rn   r-  r]   r]   r]   r^   	WhoseEnumI  r   r@  c                   @   r  )z+TestEnum.test_init_subclass.<locals>.NoEnumrr   Nrl   rm   rn   r  r]   r]   r]   r^   NoEnumL  r  rB  r/  r;  Fc                   @   r   )z,TestEnum.test_init_subclass.<locals>.OurEnumc                 [   
   d| _ d S NOurEnumr;  r0  r]   r]   r^   r-  U  r   z>TestEnum.test_init_subclass.<locals>.OurEnum.__init_subclass__Nr?  r]   r]   r]   r^   rE  T  r   rE  c                   @   r   )z.TestEnum.test_init_subclass.<locals>.WhereEnumc                 [   r  r   r]   r0  r]   r]   r^   r-  X  r  z@TestEnum.test_init_subclass.<locals>.WhereEnum.__init_subclass__Nr?  r]   r]   r]   r^   	WhereEnumW  r   rG  c                   @   r  )z.TestEnum.test_init_subclass.<locals>.NeverEnumr  NrA  r]   r]   r]   r^   	NeverEnumZ  r  rH  )r   r	  r0  r  r.  rf   r@  rB  rE  rG  rH  r]   r  r9  rf   r^   test_init_subclass>  "   zTestEnum.test_init_subclassc                    s   G dd dt  | t G dd d t}W d    n1 s!w   Y  | t G  fddd t}W d    d S 1 sBw   Y  d S )Nc                   @   r  )z*TestEnum.test_init_exception.<locals>.Basec                 W   r	  r   r
  r,  rg   r]   r]   r^   r(  d  r   z2TestEnum.test_init_exception.<locals>.Base.__new__c                 S   s
   t d|)NzI don't like)r   )rf   r4  r]   r]   r^   re   f  r   z3TestEnum.test_init_exception.<locals>.Base.__init__N)rl   rm   rn   r(  re   r]   r]   r]   r^   Basec  r  rN  c                   @   rs  ),TestEnum.test_init_exception.<locals>.MyEnumr  c                 S   r  r   r5  rf   r5  r]   r]   r^   re   k  r   5TestEnum.test_init_exception.<locals>.MyEnum.__init__N)rl   rm   rn   r  re   r]   r]   r]   r^   r  i  rx  r  c                       s$   e Zd ZdZdd Z fddZdS )rO  r  c                 S   r  r   rP  rQ  r]   r]   r^   re   p  r   rR  c                    s     | } ||_|S r   )r(  r)  r+  rN  r]   r^   r(  r  s   

z4TestEnum.test_init_exception.<locals>.MyEnum.__new__N)rl   rm   rn   r  re   r(  r]   rS  r]   r^   r  n  s    )r'  r  r   r   r   )rf   r  r]   rS  r^   test_init_exceptionb  s   "zTestEnum.test_init_exceptionc              
         ddl m} |dd G  fdddt}| t|jd | |jj ddg d | d	d
 |D  ddg d dddgd ddg ddg d S )Nr   
namedtupleTTuple
id a blistc                       6   e Zd Z ddg Z dddgZ ddg dZdS z1TestEnum.test_namedtuple_as_value.<locals>.NTEnumr   rr   rs   r~   r$  Nrl   rm   rn   NONEr  r  r]   rX  r]   r^   NTEnumz      r_  *<NTEnum.NONE: TTuple(id=0, a=0, blist=[])>idr  blistc                 S   r  r]   r  r  r4  r]   r]   r^   r    r  5TestEnum.test_namedtuple_as_value.<locals>.<listcomp>rr   rs   r~   r$  collectionsrW  r   r	  r  r]  r
  rf   rW  r_  r]   r^  r^   test_namedtuple_as_valuew     
,z!TestEnum.test_namedtuple_as_valuec                 C   sT   G dd dt }G dd dt }| t|jd tu  | t|jd tu  d S )Nc                   @   r   )z,TestEnum.test_gnv_is_static.<locals>.LazyGNVc                 S   r  r   r]   r  r   r  r  r]   r]   r^   r    r  zBTestEnum.test_gnv_is_static.<locals>.LazyGNV._generate_next_value_Nr  r]   r]   r]   r^   LazyGNV  r   rm  c                   @   r  )z,TestEnum.test_gnv_is_static.<locals>.BusyGNVc                 S   r  r   r]   rl  r]   r]   r^   r    r  zBTestEnum.test_gnv_is_static.<locals>.BusyGNV._generate_next_value_N)rl   rm   rn   r  r  r]   r]   r]   r^   BusyGNV  r  rn  r  )r   r  rl  r0  r  )rf   rm  rn  r]   r]   r^   test_gnv_is_static  s   zTestEnum.test_gnv_is_staticc              
      rU  )Nr   rV  rX  rY  c                       rZ  r[  r\  r]   r^  r]   r^   r_    r`  r_  ra  rb  c                 S   r  r]   r  re  r]   r]   r^   r    r  rf  rr   rs   r~   r$  rg  ri  r]   r^  r^   rj    rk  c                 C   sT   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Ze de fZdde fZe e e fZdS )z4TestEnum.test_multiple_auto_assignment.<locals>.Manyr  rs   r~   r   Nr  r]   r]   r]   r^   Many  s
    rp  rt   )rr   rs   rs   )r~   r   rt   )r~   r   ra  )r   r	  r  r  r
  r  r  )rf   rp  r]   r]   r^   test_multiple_auto_assignment  s
   z&TestEnum.test_multiple_auto_assignmentN)rl   rm   rn   r+  rF  rR  rq  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r*  r.  r0  r2  r3  r5  r7  r;  r@  rF  rM  rO  rQ  rS  rW  ra  rc  re  rf  rh  rj  rn  rp  rr  rt  rv  rw  ry  rz  r{  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r:  r@  rC  rJ  rL  rO  rW  r[  r`  rb  rp  ru  r|  r}  r~  r  r  r  CONTINUESWITCHING_PROTOCOLS
PROCESSINGr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r'  r)  r1  r3  r:  r<  rN  rO  rW  rY  rZ  rc  rd  rj  rp  r|  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r-   r  r  r$  r%  r&  rK  rT  rj  ro  rq  r]   r]   r]   r^   r    s^   >
!	!

								
					

=^78857	
 $!'	|;h	$r  c                   @   r}  )TestStrEnumc                    r,  )Nc                   @   r-  )	z-TestStrEnum.test_set_name.<locals>.DescriptorNc                 S   r.  r   r/  r1  r]   r]   r^   r     r3  z5TestStrEnum.test_set_name.<locals>.Descriptor.__get__c                 S   r4  r   r/  r5  r]   r]   r^   r    r6  z5TestStrEnum.test_set_name.<locals>.Descriptor.__set__c                 S   r7  r   r  r8  r]   r]   r^   r:    r   z:TestStrEnum.test_set_name.<locals>.Descriptor.__set_name__r   r;  r]   r]   r]   r^   r<    r=  r<  c                       r>  )z)TestStrEnum.test_set_name.<locals>.AnEnumr  Nr?  r]   r@  r]   r^   rA    rB  rA  r  rC  rD  rE  r]   r@  r^   rF    rG  zTestStrEnum.test_set_namec                 C   rH  )Nc                   @   r   )z/TestStrEnum.test_private_names.<locals>.PrivaterI  rJ  NrK  r]   r]   r]   r^   rN    r   rN  r   rI  rJ  rO  rQ  r]   r]   r^   rR    rS  zTestStrEnum.test_private_namesc                 C   sL   G dd dt }| |j|jk  | |j d | |jdd d S )Nc                   @   r   )z7TestStrEnum.test_strenum_inherited_methods.<locals>.phyr  r  Nr	  r]   r]   r]   r^   r    r   r  r  r  rr   )r   r  r
  r  r	  upperr  r  r]   r]   r^   test_strenum_inherited_methods  s   z*TestStrEnum.test_strenum_inherited_methodsc              	      sP  t t  g tdfD ]" | td G  fdddt}W d    n1 s%w   Y  qG dd dt}| dd |D g d	 | td
 G dd dt}W d    n1 sYw   Y  G dd dt}| dd |D g d | td G dd dt}W d    n1 sw   Y  G dd dt}| dd |D g d d S )Nr  zvalues must be strc                       r  ),TestStrEnum.test_strict_strenum.<locals>.HuhNrl   rm   rn   huhr]   uhohr]   r^   r    r  r  c                   @   (   e Zd ZdZe ZdZe ZdZdZ	dS )z/TestStrEnum.test_strict_strenum.<locals>.Eitherthis that Those lower upperThatrx  UPPERN
rl   rm   rn   r   r"   r}  r{  Thoserx  rv  r]   r]   r]   r^   Either      r  c                 S   r  r]   r  r  r]   r]   r^   r    r  z3TestStrEnum.test_strict_strenum.<locals>.<listcomp>)r}  r  r|  rx  r  z is not lower-casec                   @   r  rx  WhatNry  r]   r]   r]   r^   r    r  c                   @   r}  )z.TestStrEnum.test_strict_strenum.<locals>.Lowerr~  r{  rx  rv  Nr  r]   r]   r]   r^   Lower  r  r  c                 S   r  r]   r  r  r]   r]   r^   r    r  )r}  r{  r|  rx  rv  z is not upper-casec                   @   r  r  ry  r]   r]   r]   r^   r    r  c                   @   r}  )z.TestStrEnum.test_strict_strenum.<locals>.Upperr~  THATLOWERr  Nr  r]   r]   r]   r^   Upper  r  r  c                 S   r  r]   r  r  r]   r]   r^   r    r  )THISr  THOSEr  r  )	r'  r   ra   r   r   r	  r   r	   r
   )rf   r  r  r  r  r]   r{  r^   test_strict_strenum  s"   zTestStrEnum.test_strict_strenumc                    r'  )Nc                       r(  )z.TestStrEnum.test_init_subclass.<locals>.MyEnumc                    r)  r*  r,  r0  r1  r]   r^   r-    r2  z@TestStrEnum.test_init_subclass.<locals>.MyEnum.__init_subclass__r3  r]   r4  rj   r^   r    r5  r  c                       r6  )z1TestStrEnum.test_init_subclass.<locals>.TheirEnumc                    r7  r8  r:  r0  r<  r]   r^   r-    r=  zCTestStrEnum.test_init_subclass.<locals>.TheirEnum.__init_subclass__r3  r]   r>  rj   r^   r9    r  r9  c                   @   r   )z1TestStrEnum.test_init_subclass.<locals>.WhoseEnumc                 [   r  r   r]   r0  r]   r]   r^   r-  	  r  zCTestStrEnum.test_init_subclass.<locals>.WhoseEnum.__init_subclass__Nr?  r]   r]   r]   r^   r@    r   r@  c                   @   r  )z.TestStrEnum.test_init_subclass.<locals>.NoEnumr  NrA  r]   r]   r]   r^   rB    r  rB  r/  r;  Fc                   @   r   )z/TestStrEnum.test_init_subclass.<locals>.OurEnumc                 [   rC  rD  rF  r0  r]   r]   r^   r-    r   zATestStrEnum.test_init_subclass.<locals>.OurEnum.__init_subclass__Nr?  r]   r]   r]   r^   rE    r   rE  c                   @   r   )z1TestStrEnum.test_init_subclass.<locals>.WhereEnumc                 [   r  r   r]   r0  r]   r]   r^   r-    r  zCTestStrEnum.test_init_subclass.<locals>.WhereEnum.__init_subclass__Nr?  r]   r]   r]   r^   rG    r   rG  c                   @   r  )z1TestStrEnum.test_init_subclass.<locals>.NeverEnumr  NrA  r]   r]   r]   r^   rH    r  rH  )r   r	  r0  r  r.  rI  r]   rJ  r^   rK    rL  zTestStrEnum.test_init_subclassN)rl   rm   rn   rF  rR  rw  r  rK  r]   r]   r]   r^   ru    s    
(ru  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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d0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFdG Z&dHdI Z'e()e*dJdKdL Z+dMdN Z,dOdP Z-dQdR Z.dSdT Z/dUdV Z0dWdX Z1dYdZ Z2d[d\ Z3d]d^ Z4d_d` Z5dadb Z6dcdd Z7deS )fTestFlagzTests of the Flags.c                 C   st   G dd dt }|| _G dd dt }|| _G dd dt }|| _G dd dtt }|| _G d	d
 d
t }|| _d S )Nc                   @   s   e Zd ZdZd\ZZZdS )zTestFlag.setUp.<locals>.PermR W X)r~   rs   rr   Nrl   rm   rn   r   RWXr]   r]   r]   r^   Perm&  s    r  c                   @   s@   e Zd ZdZdZdZdZdZeeB ZeeB eB Z	eeB eB Z
dS )zTestFlag.setUp.<locals>.Colorr   rr   rs   r~   N)rl   rm   rn   ry  r  ROJOr  r  PURPLEWHITEBLANCOr]   r]   r]   r^   r   +  s    r   c                   @   sL   e Zd ZdZe Ze ZeeB Ze ZeeB Z	eeB Z
eeB eB Ze ZdS )zTestFlag.setUp.<locals>.FunzONE TWO FOUR EIGHTN)rl   rm   rn   r   r"   r  r  r  r  FIVESIXSEVENEIGHTr]   r]   r]   r^   Fun6  s    
r  c                   @   s   e Zd Zdd Ze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ejZdd Zdd Z d d! Z!d"S )#z!TestFlag.setUp.<locals>.TermColorc                 S   $   d| }t | |}||_||_|S r=  r?  r(  r)  r@  r,  r
  r@  rB  r   r]   r]   r^   r(  C  r  z)TestFlag.setUp.<locals>.TermColor.__new__c                 W      d dd |D }||f S )N;c                 s       | ]}|j V  qd S r   r@  r  r]   r]   r^   	<genexpr>L      zRTestFlag.setUp.<locals>.TermColor._create_pseudo_member_values_.<locals>.<genexpr>r   r,  r  r  r@  r]   r]   r^   _create_pseudo_member_values_J     
z?TestFlag.setUp.<locals>.TermColor._create_pseudo_member_values_rE  rG  24rm  303132333435rJ  3739rM  4142434445464749c                 S   sB   | j d urd| jj| j f S d| jjddd t| D f S )NrH  <%s: %s>|c                 S   r  r]   r  r  r]   r]   r^   r  p  r  z>TestFlag.setUp.<locals>.TermColor.__repr__.<locals>.<listcomp>)rK  rk   rl   r   r   __iter__r   r]   r]   r^   r  l  s   
&z*TestFlag.setUp.<locals>.TermColor.__repr__c                 S   s   t | jddd | S N r   )endverboser  rQ  r   r]   r]   r^   	__enter__r  s   z+TestFlag.setUp.<locals>.TermColor.__enter__c                 W   s   t | jddd d S r  r  )rf   rg   r]   r]   r^   __exit__v  r   z*TestFlag.setUp.<locals>.TermColor.__exit__N)"rl   rm   rn   r(  r  r  rQ  rR  Dim	UnderlineNormalFG_BlackFG_RedFG_Green	FG_YellowFG_Blue
FG_MagentarS  FG_WhiteFG_ResetrT  BG_RedBG_Green	BG_YellowBG_Blue
BG_MagentaBG_CyanBG_WhiteBG_Resetr?  rP  r  r  r  r]   r]   r]   r^   	TermColorB  s>    
r  c                   @   r|   )zTestFlag.setUp.<locals>.Openr   rr   rs   rt      N)rl   rm   rn   ROWORWACCEr]   r]   r]   r^   Openz  r   r  )r   r  r   r  r?  r  r  )rf   r  r   r  r  r  r]   r]   r^   r+  %  s   	
6
zTestFlag.setUpc                    r,  )Nc                   @   r-  )	z*TestFlag.test_set_name.<locals>.DescriptorNc                 S   r.  r   r/  r1  r]   r]   r^   r     r3  z2TestFlag.test_set_name.<locals>.Descriptor.__get__c                 S   r4  r   r/  r5  r]   r]   r^   r    r6  z2TestFlag.test_set_name.<locals>.Descriptor.__set__c                 S   r7  r   r  r8  r]   r]   r^   r:    r   z7TestFlag.test_set_name.<locals>.Descriptor.__set_name__r   r;  r]   r]   r]   r^   r<    r=  r<  c                       r>  )z&TestFlag.test_set_name.<locals>.AnEnumrr   Nr?  r]   r@  r]   r^   rA    rB  rA  r  rC  rD  rE  r]   r@  r^   rF    rG  zTestFlag.test_set_namec                 C   rT  )Nc                   @   rU  )	z,TestFlag.test_new_with_keywords.<locals>.HuhrV  Nc                 S   sV   | j rdt| j d  }nd}t| |}|r|d u r|}||_||_||_||_|S )Nrs   rr   r   )rW  r  r!  r(  rX  rY  r   r)  rZ  r]   r]   r^   r(    s   z4TestFlag.test_new_with_keywords.<locals>.Huh.__new__r\  r]  r`  rc  rd  r]   r]   r]   r^   r    s    
r  ri  rj  rk  )r   rf  r  rl  r	  r
  r   rX  rY  rg  rh  rm  r]   r]   r^   rq    s"   zTestFlag.test_new_with_keywordsc                 C   rH  )Nc                   @   r   )z,TestFlag.test_private_names.<locals>.PrivaterI  rJ  NrK  r]   r]   r]   r^   rN    r   rN  r   rI  rJ  rO  rQ  r]   r]   r^   rR    rS  zTestFlag.test_private_namesc                 C   sj   | j }| t||j|j|j|jg | |jjd | t	|j
d | t|j
|j|j|jg d S )Nrt   z<Fun.SEVEN: 7>)r  r	  r  r  r  r  r  r  r)  r  r  )rf   r  r]   r]   r^   test_auto_alias  s   "zTestFlag.test_auto_aliasc                 C   s|   | j j| j j}}||B }| |d | |j|j|jB  | |jd|j|jg | t|d | t|d d S )Nz[31;47mr  z<TermColor.FG_Red|BG_White>)	r  r  r  r	  r
  r@  r   r  r?  )rf   r   r  barberr]   r]   r^   test_str_is_str_str  s   zTestFlag.test_str_is_str_strc                 C   s   | j }| j}| d|v  | d|v  | |j|v  | |j|v  | |j|v  | |j|v  | d|v  | d|v  d S )Nry  r  r   )r   r  r  r  ry  r  rf   r   r  r]   r]   r^   test_membership     zTestFlag.test_membershipc                    sX   | j  | t fdd | t fdd |  j jv  |  j d v  d S )Nc                      
   d j v S r  r  r]   r  r]   r^   r    r  z/TestFlag.test_member_contains.<locals>.<lambda>c                      r  r  r  r]   r  r]   r^   r    r  zRED|GREEN|BLUE)r   r  r   r  r  r   r]   r  r^   r    s
   zTestFlag.test_member_containsc                 C   sd   |  | j| jjd |  | j| jjd |  | j| jjd |  | j| jjd d S )Nr   rr   rs   rt   )r	  r   __len__ry  r  r  r  r   r]   r]   r^   test_member_length  s   zTestFlag.test_member_lengthc                 C   sx   G dd dt }| t||j|j|j|j|jg | |j|j	 | |j	j
d | |jj
d | |jj
d d S )Nc                   @   s2   e Zd ZdZe Ze Ze ZdZe Z	e Z
dS )z>TestFlag.test_number_reset_and_order_cleanup.<locals>.ConfusedzONE TWO FOUR DOS EIGHT SIXTEENrs   N)rl   rm   rn   r   r"   r  r  r  r  r  SIXTEENr]   r]   r]   r^   r    s    
r  rs   r      )r   r	  r  r  r  r  r  r  r,  r  r)  r  r]   r]   r^   r    s   z,TestFlag.test_number_reset_and_order_cleanupc                 C   s  | j }| t|jd | t|jd | t|jd | t|j|jB d | t|j|jB |jB d | t|dd | t|j d | t|j d	 | t|j d | t|j|jB  d | t|j|jB |jB  d | t|d
d | t|d
d | j}| t|jd | t|jd | t|j	d | t|j|j
B d | t|j|j
B d | t|j d | t|j d | t|j	 d | t|j|j
B  d | t|j|j
B  d d S )NzPerm.RzPerm.WzPerm.XzPerm.R|Wz
Perm.R|W|Xr   zPerm(0)zPerm.W|XzPerm.R|XrP   zOpen.ROzOpen.WOzOpen.ACzOpen.CEz
Open.WO|CEzOpen.WO|RW|CEz
Open.RW|CEzOpen.RWr  r	  r?  r  r  r  r  r  r  r  r  rf   r  r  r]   r]   r^   test_str  s2    zTestFlag.test_strc                 C   s  | j }| t|jd | t|jd | t|jd | t|j|jB d | t|j|jB |jB d | t|dd | t|j d | t|j d	 | t|j d | t|j|jB  d | t|j|jB |jB  d | t|d
d | j}| t|jd | t|jd | t|j	d | t|j|j
B d | t|j|j
B d | t|j d | t|j d | t|j	 d | t|j|j
B  d | t|j|j
B  d d S )N<Perm.R: 4><Perm.W: 2><Perm.X: 1><Perm.R|W: 6><Perm.R|W|X: 7>r   	<Perm: 0><Perm.W|X: 3><Perm.R|X: 5>rP   <Open.RO: 0><Open.WO: 1><Open.AC: 3><Open.CE: 524288><Open.WO|CE: 524289><Open.WO|RW|CE: 524291><Open.RW|CE: 524290><Open.RW: 2>)r  r	  r  r  r  r  r  r  r  r  r  r  r]   r]   r^   	test_repr   0    zTestFlag.test_reprc                 C   L   | j }| |j|d u  | |j|jB |d u  | |j|d u  d S Nr  z	RED|GREENzRED|BLUEr   r  r  r  r  r   r]   r]   r^   test_name_lookup;     zTestFlag.test_name_lookupc                 C   s   | j }|D ],}|D ]'}| ||B ||j|jB  | ||B j|j|jB  | t||B | q	q|D ]
}| ||B | q4| j}| |j|jB |j d S r   r  r	  r
  r,  rl  r  r  r  rf   r  r  jr  r]   r]   r^   test_orA  s   zTestFlag.test_orc           
      C   s   | j }|j|jB }|j|jB }|j|jB }|j|jB |jB }t||||||dg }|D ]}|D ]}| ||@ j|j|j@  | t||@ | q1q-|D ]}| ||@ | | ||@ | | ||@ | qN| j	}	| |	j
|	j@ |	j
 d S r   )r  r  r  r  r  r	  r
  r,  rl  r  r  r  
rf   r  r  RXWXRWXr  r  r
  r  r]   r]   r^   test_andM  s"   zTestFlag.test_andc                 C   s   | j }|D ]}|D ]}| ||A j|j|jA  | t||A | q	q|D ]}| ||dA | | |d|A | q&| j}| |j|jA |j | |j|jA |j d S r   r  r	  r]   r]   r^   test_xor_  s   zTestFlag.test_xorc           	      C   s   | j }|j|jB }|j|jB }|j|jB }|j|jB |jB }t||||||dg }|D ]}| t| | | |  | q-|D ]
}| |  | qC| j}| |j	|j	 @ |j
 | |j	|jB |j	 @ |j d S r   )r  r  r  r  r  r,  rl  r	  r  r  r  r  	rf   r  r  r  r  r  r  r  r  r]   r]   r^   test_invertl  s   "zTestFlag.test_invertc                 C   D   | j }|D ]}| | q| j}|D ]}| t|jt| qd S r   r  r  r  r	  r  r
  rf   r  r  r  r]   r]   r^   r  |     zTestFlag.test_boolc                 C   s|   G dd dt }G dd d|}|}| |jjd | |jjd | |jjd | |j|jB jdd	|j|jB   d S )
Nc                   @   r   )z'TestFlag.test_doc_flag.<locals>.DocFlagr   r   N)rl   rm   rn   r  r(  r]   r]   r]   r^   DocFlag  r   r  c                   @   s<   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S )z.TestFlag.test_doc_flag.<locals>.AddressSegmentzXUNKNOWN PO PO_TYPE NUMBER PREORD NAME STREET POSTORD SECONDARY_TYPE SECONDARY_NUMBER ANDz(unable to determine address element typezpost office deliveryzbox or drawerzmain unit designatorzN S E W etczstreet namezst ave blvd etczapt bldg floor etczsecondary unit designatorz& indicates a corner addressN)rl   rm   rn   r   UNKNOWNPOPO_TYPENUMBERPREORDNAMESTREETPOSTORDSECONDARY_TYPESECONDARY_NUMBERANDr]   r]   r]   r^   AddressSegment  s    r$  r  r     0   z%r is not 48)r   r	  r  r)  r  r!  )rf   r  r$  ASr]   r]   r^   test_doc_flag  s   (zTestFlag.test_doc_flagc                 C   s@   | j }| t||j|j|jg | t|j|j|jg d S r   )r   r	  r  r  r  r  r  rf   r  r]   r]   r^   test_iteration  s   zTestFlag.test_iterationc                 C   sL   | j }| t|jg  | t|j|jg | t|j|j|jg d S r   )r   r	  r  ry  r  r  r  r)  r]   r]   r^   test_member_iteration  s   zTestFlag.test_member_iterationc                 C   s   t dd}t|}| t|t| | t|d| | ||j|j|jg td D ]1\}}d|> }||}| |j	| | t
|j	t | |j| | || | t
|| q.d S Nr  r  rt   rr   r   r  r	  r  r  r  r  r  r  r
  rl  r!  r  assertInr,  rf   r  r  r  nr  r  r]   r]   r^   ra    s   
z)TestFlag.test_programatic_function_stringc                 C   s   t dddd}t|}| t|t| | t|d| | ||j|j|jg td D ]1\}}d|> }||}| |j	| | t
|j	t | |j| | || | t
|| q0d S Nr  r  r   rb  rt   r-  r/  r]   r]   r^   rc       z4TestFlag.test_programatic_function_string_with_startc                 C   s   t dg d}t|}| t|t| | t|d| | ||j|j|jg td D ]1\}}d|> }||}| |j	| | t
|j	t | |j| | || | t
|| q0d S Nr  )r  r  r  rt   r  rr   r-  r/  r]   r]   r^   re    r2  z.TestFlag.test_programatic_function_string_listc                 C   s   t dd}t|}| t|t| | t|d| | ||j|j|jg td D ]5\}}dd| d > }||}| |j	| | t
|j	t | |j| | || | t
|| q.d S Nr  ))r  rs   )r  r   )r  r  rt   r  rr   rs   r-  r/  r]   r]   r^   rh    s   
z+TestFlag.test_programatic_function_iterablec                 C   s   t dtd}t|}| t|t| | t|d| | ||j|j|jg td	 D ]5\}}dd| d > }||}| |j
| | t|j
t | |j| | || | t|| q0d S r4  )r   r7   r  r	  r  r  r  r  r  r  r
  rl  r!  r  r.  r,  r/  r]   r]   r^   rj    s   z,TestFlag.test_programatic_function_from_dictc                 C   sh   t dg }| tt|t| | t|d tdg }| tt|t| | t|d d S )Nr  r   Thingr   r	  r  r  r   rf   r  r5  r]   r]   r^   $test_programatic_function_empty_list     

z-TestFlag.test_programatic_function_empty_listc                 C   sh   t dd}| tt|t| | t|d tdd}| tt|t| | t|d d S )Nr  r]   r   r5  r6  r7  r]   r]   r^   %test_programatic_function_empty_tuple  r9  z.TestFlag.test_programatic_function_empty_tuplec                 C   sr  t ttrtt| jtjtjB  t| jt t| jtjtj @  t| jt t| jtj t| jtjtjB  t| jtj	 t| jtjtj	B  t| jt
j t| jt
jt
jB  t| jt
j t| jt
j t| jt
jt
jB  t| jt
j	 t| jt
jt
j	B  t| jtj t| jtjtjB  t| jtjtjB dB  t| jtd t| jtd t| jt t| jtj t| jtjdB  t| jtjtjB  t| jtj	 t| jtj	dB  t| jtjtj	B  t| jtj t| jtjtjB  t| jtj t| jtj t| jtjdB  t| jtjtjB  t| jtj	 t| jtj	dB  t| jtjtj	B  d S )Nr&  r   rr   )rP  r}   r   r   r,  rw   rx   r	  r   r   r   r   r   r   r   r]   r]   r^   test_pickle  s$  












zTestFlag.test_picklec           	      C      | j }|\}}}||B }||B }||B }||B |B }| ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  d S r   r  r  r  	rf   r  r  r  r  r  r  r  r  r]   r]   r^   test_containment  $   
zTestFlag.test_containmentc                 C   r  )Nc                   @   r   )z(TestFlag.test_auto_number.<locals>.Colorr  Nr  r]   r]   r]   r^   r     r  r   rr   rs   r~   )r   r	  r  r   r   r   r
  r   r]   r]   r^   r    r  zTestFlag.test_auto_numberc                 C   r   )Nz invalid Flag value: .not an int.c                   @   r  )z0TestFlag.test_auto_number_garbage.<locals>.Colorr  z
not an intNr  r]   r]   r]   r^   r     r  r   r   r   r]   r]   r^   test_auto_number_garbage  r   z!TestFlag.test_auto_number_garbagec                 C   sD   G dd dt }| |jjd | |jjd | |jjd d S )Nc                   @   s(   e Zd ZdZdZe Ze ZeeB ZdS )z.TestFlag.test_auto_w_pending.<locals>.RequiredzTO_S FROM_Sr   N)	rl   rm   rn   r   r]  r"   TO_SFROM_SBOTHr]   r]   r]   r^   Required  s    rE  rr   rs   rt   )r   r	  rB  r
  rC  rD  )rf   rE  r]   r]   r^   test_auto_w_pending  s   zTestFlag.test_auto_w_pendingc                 C   s0   G dd dt }| |j|j|jgt| d S )Nc                   @   r  )z+TestFlag.test_duplicate_auto.<locals>.Dupesrs  Nr  r]   r]   r]   r^   r    r  r  )r   r	  r  r  rw  r  )rf   r  r]   r]   r^   r    s    zTestFlag.test_duplicate_autoc                 C   r   )Nc                   @   rp   )z&TestFlag.test_bizarre.<locals>.Bizarrert   r~   ra  N)rl   rm   rn   r  r#  rU  r]   r]   r]   r^   Bizarre  ry   rG  r   )rf   rG  r]   r]   r^   test_bizarre  r   zTestFlag.test_bizarrec                 C   sT  G dd dt }G dd dt }G dd d|t}| |jjd | |jjd | |jjd	 | |jjd
 | t|jd G dd d||t}| |jjd | |jjd | |jjd	 | |jjd
 | t|jd G dd d||t}| |jjd | |jjd | |jjd	 | |jjd
 | t|jd d S )Nc                   @   r  )z.TestFlag.test_multiple_mixin.<locals>.AllMixinc                 S   <   t | }d }|r|d }|dd  D ]}||O }q|| _|S Nr   rr   r  ALLr,  r  	all_valuer%   r]   r]   r^   rL       
z2TestFlag.test_multiple_mixin.<locals>.AllMixin.ALLNrl   rm   rn   r   rL  r]   r]   r]   r^   AllMixin  r  rQ  c                   @   r   )z.TestFlag.test_multiple_mixin.<locals>.StrMixinc                 S   r  r   r  r   r]   r]   r^   rP    r   z6TestFlag.test_multiple_mixin.<locals>.StrMixin.__str__Nr  r]   r]   r]   r^   r    r   r  c                   @   r   z+TestFlag.test_multiple_mixin.<locals>.Colorr  Nr  r]   r]   r]   r^   r     r  r   rr   rs   r~   r  r  c                   @   r   rR  r  r]   r]   r]   r^   r     r  r   c                   @   r   rR  r  r]   r]   r]   r^   r     r  )	r'  r   r	  r  r
  r  r  rL  r?  )rf   rQ  r  r   r]   r]   r^   r     s(   zTestFlag.test_multiple_mixin!Threading required for this test.c                       G dd dt  t dg fddfddtdD }|D ]}|  q#|D ]}|  q,| d	 d
 | dtd d S )Nc                   @   P   e Zd ZdZe Ze Ze Ze Ze Z	e Z
e Ze Zdd Zdd ZdS )z0TestFlag.test_unique_composite.<locals>.TestFlag'one two three four five six seven eightc                 S      | |u S r   r]   r\  r]   r]   r^   r]  &  r   z7TestFlag.test_unique_composite.<locals>.TestFlag.__eq__c                 S   r  r   hashr)  r   r]   r]   r^   rN  (  r   z9TestFlag.test_unique_composite.<locals>.TestFlag.__hash__Nrl   rm   rn   r   r"   r  r  rC  fourfivesixseveneightr]  rN  r]   r]   r]   r^   r        r  Fc                     @   zt dD ]	}  |  qW d S  ty   dd< Y d S w N   Tr   r   rB   r   r  r  failedseenr]   r^   
cycle_enum-     z2TestFlag.test_unique_composite.<locals>.cycle_enumc                       g | ]}t j d qS )r   	threadingThreadr  r  ri  r]   r^   r  4      
z2TestFlag.test_unique_composite.<locals>.<listcomp>r   r   ;at least one thread failed while creating composite membersrc  "too many composite members created)r   r  r   r   r   r  r	  r  rf   threadstr]   r  ri  rg  rh  r^   test_unique_composite      


zTestFlag.test_unique_compositec                    s   G  fdddt  d S )Nc                       sB   e Zd ZdZdd Ze fddZdZdZdZ	d	Z
d
Z  ZS )zHTestFlag.test_init_with_autovalue_and_generate_next_value.<locals>.Colorz
value codec                 _   s   |sd|f|d u f| S d}t |D ] }zt|}W  n ty3 }	 z|	}
d}W Y d }	~	 nd }	~	ww |r8|
d|d  f| S )Nrr   FTrs   )rR  r6   r   )r  r   r  last_valuesrg   rh   r  
last_valuehigh_bitr  r   r]   r]   r^   r  E  s    z^TestFlag.test_init_with_autovalue_and_generate_next_value.<locals>.Color._generate_next_value_c                    s8   t | |}t | |}ddd |D |_|S )Nr  c                 s   r  r   r  r  r]   r]   r^   r  Y  r  zrTestFlag.test_init_with_autovalue_and_generate_next_value.<locals>.Color._create_pseudo_member_.<locals>.<genexpr>)r  _iter_member_rd   _create_pseudo_member_r   r@  )r,  r
  r  pseudo_memberr   rk   r]   r^   r  U  s   z_TestFlag.test_init_with_autovalue_and_generate_next_value.<locals>.Color._create_pseudo_member_rE  rG  r  r  rm  )rl   rm   rn   r  r  r  r  rQ  rR  r  r  r  ro   r]   r  rj   r^   r   C  s    r   r   r   r]   r  r^   0test_init_with_autovalue_and_generate_next_valueB  r  z9TestFlag.test_init_with_autovalue_and_generate_next_valuec                    s   G  fdddt t d S )Nc                       Z   e Zd ZdZdd Zedd Ze fddZdZ	d	Z
d
ZdZdZdZdZdZ  ZS )z>TestFlag.test_autovalue_and_generate_next_value.<locals>.ColorFFG_Black FG_Red FG_Green FG_Blue BG_Yellow BG_Magenta BG_Cyan BG_Whitec                 S   r  r=  r  r  r]   r]   r^   r(  e  r  zFTestFlag.test_autovalue_and_generate_next_value.<locals>.Color.__new__c                 _      d| f| S r  r]   r  r]   r]   r^   r  k  r  zTTestFlag.test_autovalue_and_generate_next_value.<locals>.Color._generate_next_value_c                    8   t | |}ddd |D }t | ||}|S )Nr  c                 s   r  r   r  r  r]   r]   r^   r  s  r  zhTestFlag.test_autovalue_and_generate_next_value.<locals>.Color._create_pseudo_member_.<locals>.<genexpr>r  r~  r   rd   r  r,  r
  r  r@  r  r  r]   r^   r  o     zUTestFlag.test_autovalue_and_generate_next_value.<locals>.Color._create_pseudo_member_r  r  r  r  r  r  r  r  rl   rm   rn   r   r(  r  r  r  r  r  r  r  r  r  r  r  r  ro   r]   r  rj   r^   r   c  s    
r   )r?  r   r   r]   r  r^   &test_autovalue_and_generate_next_valueb  s   z/TestFlag.test_autovalue_and_generate_next_valuec                    s\   G  fdddt t | t j  | t jt  |  jd |  jjd d S )Nc                       r  )z%TestFlag.test_subclass.<locals>.Colorr  c                 S   r  r=  r  r  r]   r]   r^   r(    r  z-TestFlag.test_subclass.<locals>.Color.__new__c                 _   r  r  r]   r  r]   r]   r^   r    r  z;TestFlag.test_subclass.<locals>.Color._generate_next_value_c                    r  )Nr  c                 s   r  r   r  r  r]   r]   r^   r    r  zOTestFlag.test_subclass.<locals>.Color._create_pseudo_member_.<locals>.<genexpr>r  r  r  r]   r^   r    r  z<TestFlag.test_subclass.<locals>.Color._create_pseudo_member_r  r  r  r  r  r  r  r  r  r]   r  rj   r^   r     s    
r   [30mr  r?  r   r  rP  r  r	  r@  r   r]   r  r^   test_subclass  s
   zTestFlag.test_subclassc                    l   G  fdddt t}G dd d| | t j  | t jt  |  jd |  jjd d S )Nc                       *   e Zd Zdd Ze fddZ  ZS )z-TestFlag.test_sub_subclass_1.<locals>.StrFlagc                 S   r  r=  r  r  r]   r]   r^   r(    r  z5TestFlag.test_sub_subclass_1.<locals>.StrFlag.__new__c                    r  )Nr  c                 s   r  r   r  r  r]   r]   r^   r    r  zWTestFlag.test_sub_subclass_1.<locals>.StrFlag._create_pseudo_member_.<locals>.<genexpr>r  r  r  r]   r^   r    r  zDTestFlag.test_sub_subclass_1.<locals>.StrFlag._create_pseudo_member_rl   rm   rn   r(  r  r  ro   r]   r  rj   r^   StrFlag      r  c                   @   0   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )z+TestFlag.test_sub_subclass_1.<locals>.Colorr  r  r  r  r  r  r  r  r  Nrl   rm   rn   r   r  r  r  r  r  r  r  r  r]   r]   r]   r^   r         r   r  r  r  rf   r  r]   r  r^   test_sub_subclass_1  s   zTestFlag.test_sub_subclass_1c                    r  )Nc                       s.   e Zd Zedd Ze fddZ  ZS )z-TestFlag.test_sub_subclass_2.<locals>.StrFlagc                 _   r  r  r]   r  r]   r]   r^   r    r  zCTestFlag.test_sub_subclass_2.<locals>.StrFlag._generate_next_value_c                    r  )Nr  c                 s   r  r   r  r  r]   r]   r^   r    r  zWTestFlag.test_sub_subclass_2.<locals>.StrFlag._create_pseudo_member_.<locals>.<genexpr>r  r  r  r]   r^   r    r  zDTestFlag.test_sub_subclass_2.<locals>.StrFlag._create_pseudo_member_)rl   rm   rn   r  r  r  r  ro   r]   r  rj   r^   r    s
    
r  c                   @   s8   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S )z+TestFlag.test_sub_subclass_2.<locals>.Colorr  c                 S   r  r=  r  r  r]   r]   r^   r(    r  z3TestFlag.test_sub_subclass_2.<locals>.Color.__new__r  r  r  r  r  r  r  r  N)rl   rm   rn   r   r(  r  r  r  r  r  r  r  r  r]   r]   r]   r^   r     s    r   r  r  r  r  r]   r  r^   test_sub_subclass_2  s   zTestFlag.test_sub_subclass_2c                    r  )Nc                       r  )z-TestFlag.test_sub_subclass_3.<locals>.StrFlagc                 S   r  r=  r  r  r]   r]   r^   r(    r  z5TestFlag.test_sub_subclass_3.<locals>.StrFlag.__new__c                    r  )Nr  c                 s   r  r   r  r  r]   r]   r^   r    r  zWTestFlag.test_sub_subclass_3.<locals>.StrFlag._create_pseudo_member_.<locals>.<genexpr>r  r  r  r]   r^   r    r  zDTestFlag.test_sub_subclass_3.<locals>.StrFlag._create_pseudo_member_r  r]   r  rj   r^   r    r  r  c                   @   r  )z+TestFlag.test_sub_subclass_3.<locals>.Colorr  r  r  r  r  r  r  r  r  Nr  r]   r]   r]   r^   r     r  r   r  r  r  r  r]   r  r^   test_sub_subclass_3  s   zTestFlag.test_sub_subclass_3c                 C   s   G dd dt t}G dd d|}| t|j| | t|jt  | |jd | |jjd |j|jB }| t|| | t|t  | |d | |jd | t|d	 d S )
Nc                   @   r  )z-TestFlag.test_sub_subclass_4.<locals>.StrFlagc                 S   r  r=  r  r  r]   r]   r^   r(    r  z5TestFlag.test_sub_subclass_4.<locals>.StrFlag.__new__c                 W   r  )Nr  c                 s   r  r   r  r  r]   r]   r^   r    r  z^TestFlag.test_sub_subclass_4.<locals>.StrFlag._create_pseudo_member_values_.<locals>.<genexpr>r  r  r]   r]   r^   r    r  zKTestFlag.test_sub_subclass_4.<locals>.StrFlag._create_pseudo_member_values_N)rl   rm   rn   r(  r  r  r]   r]   r]   r^   r    s    r  c                   @   s8   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
d ZdS )z+TestFlag.test_sub_subclass_4.<locals>.Colorr  r  r  r  r  r  r  r  r  c                 S   rF  rG  rI  r   r]   r]   r^   r  %  rJ  z4TestFlag.test_sub_subclass_4.<locals>.Color.__repr__N)rl   rm   rn   r   r  r  r  r  r  r  r  r  r  r]   r]   r]   r^   r     s    r   r  r  z[30;45mz30;45z<Color.FG_Black|BG_Magenta>)	r?  r   r  rP  r  r	  r@  r  r  )rf   r  r   colorsr]   r]   r^   test_sub_subclass_4  s   zTestFlag.test_sub_subclass_4c                    sv   G  fdddt t G dd d }| t|j| | t|jt  | |jdt |j | |jjd d S )Nc                       r  )z8TestFlag.test_sub_subclass_with_new_new.<locals>.StrFlagc                 S   r  r=  r  r  r]   r]   r^   r(  4  r  z@TestFlag.test_sub_subclass_with_new_new.<locals>.StrFlag.__new__c                    r  )Nr  c                 s   r  r   r  r  r]   r]   r^   r  >  r  zbTestFlag.test_sub_subclass_with_new_new.<locals>.StrFlag._create_pseudo_member_.<locals>.<genexpr>r  r  )r  rk   r]   r^   r  :  r  zOTestFlag.test_sub_subclass_with_new_new.<locals>.StrFlag._create_pseudo_member_r  r]   r  rj   r^   r  3  r  r  c                   @   s@   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d ZdS )z6TestFlag.test_sub_subclass_with_new_new.<locals>.Colorr  c                 S   s.   |pd  }t| |}||_||_||_|S )Nr  )r  r?  r(  r)  r@  r  )r,  r
  stringr  rB  r   r]   r]   r^   r(  D  s   z>TestFlag.test_sub_subclass_with_new_new.<locals>.Color.__new__)r  blk)r  r   )r  grn)r  blu)r  ylw)r  mag)r  cyn)r  whtc                 S   <   | j d urd| jj| j f S d| jjddd | D f S )NrH  r  r  c                 S   r  r]   r  r  r]   r]   r^   r  Z  r  zSTestFlag.test_sub_subclass_with_new_new.<locals>.Color.__repr__.<locals>.<listcomp>rK  rk   rl   r   r   r]   r]   r^   r  V     
 z?TestFlag.test_sub_subclass_with_new_new.<locals>.Color.__repr__N)rl   rm   rn   r   r(  r  r  r  r  r  r  r  r  r  r]   r]   r]   r^   r   B  s    r   Blkr  )r?  r   r  rP  r  r	  r  r  r   r]   r  r^   test_sub_subclass_with_new_new2  s   z'TestFlag.test_sub_subclass_with_new_newc                 C   sp   G dd dt t}| |jd | |jjd | |jd | |jjd | |jd | |jjd d S )	Nc                   @   r   )z7TestFlag.test_subclass_with_default_new.<locals>.MyFlagzthis these theotherr{  r|  thingimibobsN)rl   rm   rn   r   r}  r~  r  r]   r]   r]   r^   MyFlaga  r   r  r{  rr   r|  rs   r  r~   )r?  r   r	  r}  r
  r~  r  )rf   r  r]   r]   r^   test_subclass_with_default_new`  s   z'TestFlag.test_subclass_with_default_newc                    s   G  fdddt t  j jB }| t|  | t|t  | | j jB  | |d | |jd | |j	d d S )Nc                       sb   e Zd ZdZdd Zedd Ze fddZdZ	d	Z
d
ZdZdZdZdZdZdd Z  ZS )z-TestFlag.test_subclass_a_bunch.<locals>.Colorr  c                 S   r  r=  r  r  r]   r]   r^   r(  p  r  z5TestFlag.test_subclass_a_bunch.<locals>.Color.__new__c                 _   r  r  r]   r  r]   r]   r^   r  v  r  zCTestFlag.test_subclass_a_bunch.<locals>.Color._generate_next_value_c                    r  )Nr  c                 s   r  r   r  r  r]   r]   r^   r  }  r  zWTestFlag.test_subclass_a_bunch.<locals>.Color._create_pseudo_member_.<locals>.<genexpr>r  r  r  r]   r^   r  y  r  zDTestFlag.test_subclass_a_bunch.<locals>.Color._create_pseudo_member_r  r  r  r  r  r  r  r  c                 S   r  )NrH  r  r  c                 S   r  r]   r  r  r]   r]   r^   r    r  zJTestFlag.test_subclass_a_bunch.<locals>.Color.__repr__.<locals>.<listcomp>r  r   r]   r]   r^   r    r  z6TestFlag.test_subclass_a_bunch.<locals>.Color.__repr__)rl   rm   rn   r   r(  r  r  r  r  r  r  r  r  r  r  r  r  r  ro   r]   r  rj   r^   r   n  s     
r   z[34;45mz34;45zFG_Blue|BG_Magenta)
r?  r   r  r  r  rP  r,  r	  r@  r  )rf   Purpler]   r  r^   test_subclass_a_bunchm  s   $zTestFlag.test_subclass_a_bunchc                    r'  )Nc                       r(  )z+TestFlag.test_init_subclass.<locals>.MyEnumc                    r)  r*  r,  r0  r1  r]   r^   r-    r2  z=TestFlag.test_init_subclass.<locals>.MyEnum.__init_subclass__r3  r]   r4  rj   r^   r    r5  r  c                       r6  )z.TestFlag.test_init_subclass.<locals>.TheirEnumc                    r7  r8  r:  r0  r<  r]   r^   r-    r=  z@TestFlag.test_init_subclass.<locals>.TheirEnum.__init_subclass__r3  r]   r>  rj   r^   r9    r  r9  c                   @   r   )z.TestFlag.test_init_subclass.<locals>.WhoseEnumc                 [   r  r   r]   r0  r]   r]   r^   r-    r  z@TestFlag.test_init_subclass.<locals>.WhoseEnum.__init_subclass__Nr?  r]   r]   r]   r^   r@    r   r@  c                   @   r  )z+TestFlag.test_init_subclass.<locals>.NoEnumrr   NrA  r]   r]   r]   r^   rB    r  rB  r/  r;  Fc                   @   r   )z,TestFlag.test_init_subclass.<locals>.OurEnumc                 [   rC  rD  rF  r0  r]   r]   r^   r-    r   z>TestFlag.test_init_subclass.<locals>.OurEnum.__init_subclass__Nr?  r]   r]   r]   r^   rE    r   rE  c                   @   r   )z.TestFlag.test_init_subclass.<locals>.WhereEnumc                 [   r  r   r]   r0  r]   r]   r^   r-    r  z@TestFlag.test_init_subclass.<locals>.WhereEnum.__init_subclass__Nr?  r]   r]   r]   r^   rG    r   rG  c                   @   r  )z.TestFlag.test_init_subclass.<locals>.NeverEnumrr   NrA  r]   r]   r]   r^   rH    r  rH  )r   r	  r0  r  r.  rI  r]   rJ  r^   rK    rL  zTestFlag.test_init_subclassc                 C   sh   G dd dt }| |j|d | |j|jB |d | |j|d | |j|jB |d d S )Nc                   @   r|   )z/TestFlag.test_int_long_conversion.<locals>.Permrr   rs   r~                       N)rl   rm   rn   EXECWRITEREADMSB32MSB64r]   r]   r]   r^   r    r   r  r  l       r  l           )r   r	  r  r  r  rf   r  r]   r]   r^   test_int_long_conversion  s
   z!TestFlag.test_int_long_conversionN)8rl   rm   rn   r   r+  rF  rq  rR  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r*  r+  ra  rc  re  rh  rj  r8  r:  r;  r?  r  rA  rF  r  rH  r   unittest
skipUnlessrn  ry  r  r  r  r  r  r  r  r  r  r  rK  r  r]   r]   r]   r^   r  "  sj    ]$

	) 
.
( !# $!'.-$r  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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d0d1 Zd2d3 Zd4d5 Zee d6d7d8 Z!d9d: Z"d;S )<TestIntFlagzTests of the IntFlags.c                 C   sF   G dd dt }G dd dt }G dd dt }|| _|| _|| _d S )Nc                   @   r   )zTestIntFlag.setUp.<locals>.Permr  r~   rs   rr   Nr  r]   r]   r]   r^   r    r   r  c                   @   s$   e Zd ZdZdZdZdZeeB ZdS )z TestIntFlag.setUp.<locals>.Colorr   rr   rs   r~   N)rl   rm   rn   ry  r  r  r  r  r]   r]   r]   r^   r     s    r   c                   @   r   )zTestIntFlag.setUp.<locals>.Opennot a good flag candidater   rr   rs   rt   r  N	rl   rm   rn   r   r  r  r  r  r  r]   r]   r]   r^   r    r   r  )r   r  r   r  )rf   r  r   r  r]   r]   r^   r+    s   
zTestIntFlag.setUpc                    r,  )Nc                   @   r-  )	z-TestIntFlag.test_set_name.<locals>.DescriptorNc                 S   r.  r   r/  r1  r]   r]   r^   r     r3  z5TestIntFlag.test_set_name.<locals>.Descriptor.__get__c                 S   r4  r   r/  r5  r]   r]   r^   r    r6  z5TestIntFlag.test_set_name.<locals>.Descriptor.__set__c                 S   r7  r   r  r8  r]   r]   r^   r:    r   z:TestIntFlag.test_set_name.<locals>.Descriptor.__set_name__r   r;  r]   r]   r]   r^   r<    r=  r<  c                       r>  )z)TestIntFlag.test_set_name.<locals>.AnEnumrr   Nr?  r]   r@  r]   r^   rA    rB  rA  r  rC  rD  rE  r]   r@  r^   rF    rG  zTestIntFlag.test_set_namec                 C   rH  )Nc                   @   r   )z/TestIntFlag.test_private_names.<locals>.PrivaterI  rJ  NrK  r]   r]   r]   r^   rN    r   rN  r   rI  rJ  rO  rQ  r]   r]   r^   rR    rS  zTestIntFlag.test_private_namesc                 C   s   | j }| j}| d|v  | d|v  | |j|v  | |j|v  | |j|v  | |j|v  | d|v  | d|v  d S )Nr  r  rs   )r   r  r  r  r  r  r  r]   r]   r^   r    r  zTestIntFlag.test_membershipc                    sR   | j  | t fdd | d jv  |  j jv  |  j jv  d S )Nc                      r  r  )r  r]   r  r]   r^   r    r  z2TestIntFlag.test_member_contains.<locals>.<lambda>rr   )r   r  r   r  r  r  r   r]   r  r^   r    s
   z TestIntFlag.test_member_containsc                 C   r  r  r  r   r]   r]   r^   r  !  r  zTestIntFlag.test_name_lookupc                 C   s   | j }| j}|D ]}| t|| | ||j q| t|j|jB | | |j|jB d |D ]}| t|| | ||j q2| t|j|j	B | | |j|j	B d d S r  )
r  r  r  rP  r	  r
  r  r  r  r  )rf   r  r  r  r]   r]   r^   	test_type'  s   zTestIntFlag.test_typec                 C   s  | j }| t|jd | t|jd | t|jd | t|j|jB d | t|j|jB |jB d | t|dd | t|j d | t|j d	 | t|j d | t|j|jB  d | t|j|jB |jB  d | t|d
d | j}| t|jd | t|jd | t|j	d | t|j|j
B d | t|j|j
B d | t|j d | t|j d | t|j	 d | t|j|j
B  d | t|j|j
B  d d S )Nr  r  rG  67r   rE  35rP   524288524289524291524290r  r  r]   r]   r^   r  6  r  zTestIntFlag.test_strc                 C   s  G dd dt }tj|_| t|jd | t|jd | t|jd | t|j|jB d | t|j|jB |jB d | t|dd	 | t|j d
 | t|j d | t|j d | t|j|jB  d | t|j|jB |jB  d	 | 	t
d t|jdB  W d    n1 sw   Y  | 	t
d t|jdB   W d    n1 sw   Y  | 	t
d t|d W d    n1 sw   Y  G dd dt }tj|_| t|jd | t|jd | t|jd | t|j|jB d | t|j|jB |jB d | t|dd	 | t|j d
 | t|j d | t|j d | t|j|jB  d | t|j|jB |jB  d	 | 	t
d t|jdB  W d    n	1 s~w   Y  | 	t
d t|jdB   W d    n	1 sw   Y  | 	t
d t|d W d    d S 1 sw   Y  d S )Nc                   @   r   )*TestIntFlag.test_repr_strict.<locals>.Permr  r~   rs   rr   Nr  r]   r]   r]   r^   r  S  r   r  r  r  r  r  r  r   r  r  r  z12 is not a valid Permr   z-9 is not a valid Permc                   @   r|   )r  r  r~   rs   rr   r  Nrl   rm   rn   r   r  r  r  FUTUREr]   r]   r]   r^   r  m  r   )r   rV   r   
_boundary_r	  r  r  r  r  ra   r   r  r]   r]   r^   test_repr_strictQ  sX     $zTestIntFlag.test_repr_strictc                 C     G dd dt }tj|_| t|jd | t|jd | t|jd | t|j|jB d | t|j|jB |jB d | t|dd	 | t|j d
 | t|j d | t|j d | t|j|jB  d | t|j|jB |jB  d	 | t|jdB d | t|dd	 | t|jdB  d
 | t|dd G dd dt }tj|_| t|jd | t|jd | t|jd | t|j|jB d | t|j|jB |jB d | t|dd	 | t|j d
 | t|j d | t|j d | t|j|jB  d | t|j|jB |jB  d	 | t|jdB d | t|dd	 | t|jdB  d
 | t|dd d S )Nc                   @   r   )+TestIntFlag.test_repr_conform.<locals>.Permr  r~   rs   rr   Nr  r]   r]   r]   r^   r    r   r  r  r  r  r  r  r   r  r  r  r   r  c                   @   r|   )r  r  r~   rs   rr   r  Nr  r]   r]   r]   r^   r    r   	r   rV   r   r  r	  r  r  r  r  r  r]   r]   r^   test_repr_conform  D     zTestIntFlag.test_repr_conformc                 C   s  G dd dt }| t|jd | t|jd | t|jd | t|j|jB d | t|j|jB |jB d | t|dd	 | t|j d
 | t|j d | t|j d | t|j|jB  d | t|j|jB |jB  d	 | t|jdB d | t|dd | t|jdB  d | t|dd G dd dt }| t|jd | t|jd | t|jd | t|j|jB d | t|j|jB |jB d | t|dd	 | t|j d
 | t|j d | t|j d | t|j|jB  d | t|j|jB |jB  d	 | t|jdB d | t|dd | t|jdB  d | t|dd d S )Nc                   @   s    e Zd ZdZeZdZdZdZdS ))TestIntFlag.test_repr_eject.<locals>.Permr  r~   rs   rr   N)	rl   rm   rn   r   r   r  r  r  r  r]   r]   r]   r^   r    r   r  r  r  r  r  r  r   r  r  r  r   128z-13r  z-9c                   @   s$   e Zd ZdZeZdZdZdZdZ	dS )r  r  r~   rs   rr   r  N)
rl   rm   rn   r   r   r  r  r  r  r  r]   r]   r]   r^   r    r   )r   r	  r  r  r  r  r  r]   r]   r^   test_repr_eject  s@     zTestIntFlag.test_repr_ejectc                 C   r  )Nc                   @   r   )(TestIntFlag.test_repr_keep.<locals>.Permr  r~   rs   rr   Nr  r]   r]   r]   r^   r    r   r  r  r  r  r  r  r   r  r  r  r   r  c                   @   r|   )r  r  r~   rs   rr   r  Nr  r]   r]   r]   r^   r     r   r  r  r]   r]   r^   test_repr_keep  r  zTestIntFlag.test_repr_keepc                 C   s  G dd dt }tj|_| t|jd | t|jd | t|jd | t|j|j	B d | t|j|j	B d | t|j d | t|j d	 | t|j d | t|j|j	B  d | t|j|j	B  d
 | 
td t|d W d    n1 sw   Y  | 
td t|d W d    n1 sw   Y  G dd dt }tj|_| t|jd | t|jd | t|jd | t|j|j	B d | t|j|j	B d | t|j d | t|j d	 | t|j d | t|j|j	B  d | t|j|j	B  d
 | t|dd | t|dd G dd dt }tj|_| t|jd | t|jd | t|jd | t|j|j	B d | t|j|j	B d | t|j d | t|j d	 | t|j d | t|j|j	B  d | t|j|j	B  d
 | t|dd | t|dd d S )Nc                   @   r   z(TestIntFlag.test_repr_open.<locals>.Openr  r   rr   rs   rt   r  Nr  r]   r]   r]   r^   r    r   r  r  r  r  r  r  r  r  r   z-5 is not a valid Openr  z4 is not a valid Openr~   c                   @   r   r  r  r]   r]   r]   r^   r  /  r   c                   @   r   r  r  r]   r]   r]   r^   r  D  r   z-5r  )r   rV   r   r  r	  r  r  r  r  r  ra   r   r   r   )rf   r  r]   r]   r^   test_repr_open  s\   zTestIntFlag.test_repr_openc                 C   sL  | j }|D ]s}|D ]%}| ||B |j|jB  | ||B j|j|jB  | t||B | q	tdD ]D}| ||B |j|B  | ||B j|j|B  | t||B | | ||B ||jB  | ||B j||jB  | t||B | q3q|D ]}| ||B | | |dB | | d|B | q{| j}| |j|jB |j d S Nr   r   	r  r	  r
  r,  rl  r   r  r  r  r	  r]   r]   r^   r  Y  s(   zTestIntFlag.test_orc           
   	   C   s  | j }|j|jB }|j|jB }|j|jB }|j|jB |jB }t||||||dg }|D ]}|D ]4}| ||@ |j|j@ d||f  | ||@ j|j|j@ d||f  | t||@ |d||f  q1t	dD ]D}| ||@ |j|@  | ||@ j|j|@  | t||@ | | ||@ ||j@  | ||@ j||j@  | t||@ | qjq-|D ]}| ||@ | | |d@ | | d|@ | q| j
}	| |	j|	j@ |	j d S )Nr   zi is %r, j is %rr   r  )r  r  r  r  r  r	  r
  r,  rl  r   r  r  r  r  r]   r]   r^   r  n  s2   "$ zTestIntFlag.test_andc                 C   sR  | j }|D ]s}|D ]%}| ||A |j|jA  | ||A j|j|jA  | t||A | q	tdD ]D}| ||A |j|A  | ||A j|j|A  | t||A | | ||A ||jA  | ||A j||jA  | t||A | q3q|D ]}| |dA | | d|A | q{| j}| |j|jA |j | |j|jA |j d S r  r  r	  r]   r]   r^   r    s(   zTestIntFlag.test_xorc           	      C   s   | j }|j|jB }|j|jB }|j|jB }|j|jB |jB }t||||||dg }|D ]}| | | j | t| | | |  | q-|D ]
}| |  | qL| j	}| |j
|j
 @ |j | |j
|jB |j
 @ |j d S r   )r  r  r  r  r  r	  r
  r,  rl  r  r  r  r  r  r]   r]   r^   r    s   "zTestIntFlag.test_invertc                 C   sj   | j }|j|jA }|j|jB |jB }| t|g  | t|j|jg | t||j|j|jg d S r   )r  r  r  r  r	  r  )rf   r  NoPermr  r]   r]   r^   	test_iter  s    zTestIntFlag.test_iterc                 C   s   t dd}t|}| t|t| | t|d| | ||j|j|jg td D ]7\}}d|> }||}| |j	| | t
|j	t | || | |j| | || | t
|| q.d S r,  r   r  r	  r  r  r  r  r  r  r
  rl  r!  r  r.  r,  r/  r]   r]   r^   ra    s   
z,TestIntFlag.test_programatic_function_stringc                 C   s   t dddd}t|}| t|t| | t|d| | ||j|j|jg td D ]7\}}d|> }||}| |j	| | t
|j	t | || | |j| | || | t
|| q0d S r1  r  r/  r]   r]   r^   rc       z7TestIntFlag.test_programatic_function_string_with_startc                 C   s   t dg d}t|}| t|t| | t|d| | ||j|j|jg td D ]7\}}d|> }||}| |j	| | t
|j	t | || | |j| | || | t
|| q0d S r3  r  r/  r]   r]   r^   re    r  z1TestIntFlag.test_programatic_function_string_listc                 C   s   t dd}t|}| t|t| | t|d| | ||j|j|jg td D ];\}}dd| d > }||}| |j	| | t
|j	t | || | |j| | || | t
|| q.d S r4  r  r/  r]   r]   r^   rh    s   
z.TestIntFlag.test_programatic_function_iterablec                 C   s   t dtd}t|}| t|t| | t|d| | ||j|j|jg td	 D ];\}}dd| d > }||}| |j
| | t|j
t | || | |j| | || | t|| q0d S r4  )r   r7   r  r	  r  r  r  r  r  r  r
  rl  r!  r  r.  r,  r/  r]   r]   r^   rj    s   z/TestIntFlag.test_programatic_function_from_dictc           	      C   r<  r   r=  r>  r]   r]   r^   r?    r@  zTestIntFlag.test_containmentc                 C   r  r   r  r  r]   r]   r^   r    r  zTestIntFlag.test_boolc                    s\  G dd dt }G dd dt  G dd d|t}| |jjd | |jjd | |jjd	 | |jjd
 | t|jd G  fddd| t}| |jjd | |jjd | |jjd	 | |jjd
 | t|jd G  fddd |t}| |jjd | |jjd | |jjd	 | |jjd
 | t|jd d S )Nc                   @   r  )z1TestIntFlag.test_multiple_mixin.<locals>.AllMixinc                 S   rI  rJ  rK  rM  r]   r]   r^   rL  $  rO  z5TestIntFlag.test_multiple_mixin.<locals>.AllMixin.ALLNrP  r]   r]   r]   r^   rQ  #  r  rQ  c                   @   r   )z1TestIntFlag.test_multiple_mixin.<locals>.StrMixinc                 S   r  r   r  r   r]   r]   r^   rP  /  r   z9TestIntFlag.test_multiple_mixin.<locals>.StrMixin.__str__Nr  r]   r]   r]   r^   r  .  r   r  c                   @   r   z.TestIntFlag.test_multiple_mixin.<locals>.Colorr  Nr  r]   r]   r]   r^   r   1  r  r   rr   rs   r~   r  r  c                       (   e Zd ZdZ jZe Ze Ze ZdS r  	rl   rm   rn   r   rP  r"   r  r  r  r]   r  r]   r^   r   ;      
r   c                       r  r  r  r]   r  r]   r^   r   F  r  )	r'  r   r	  r  r
  r  r  rL  r?  )rf   rQ  r   r]   r  r^   r   "  s(   zTestIntFlag.test_multiple_mixinrS  c                    rT  )Nc                   @   rU  )z3TestIntFlag.test_unique_composite.<locals>.TestFlagrV  c                 S   rW  r   r]   r\  r]   r]   r^   r]  _  r   z:TestIntFlag.test_unique_composite.<locals>.TestFlag.__eq__c                 S   r  r   rX  r   r]   r]   r^   rN  a  r   z<TestIntFlag.test_unique_composite.<locals>.TestFlag.__hash__NrZ  r]   r]   r]   r^   r  U  r`  r  Fc                     ra  rb  rd  re  rf  r]   r^   ri  f  rj  z5TestIntFlag.test_unique_composite.<locals>.cycle_enumc                    rk  rl  rm  rp  rq  r]   r^   r  m  rr  z5TestIntFlag.test_unique_composite.<locals>.<listcomp>r   r   rs  rc  rt  )r   r  r   r   r   r  r	  r  ru  r]   rx  r^   ry  R  rz  z!TestIntFlag.test_unique_compositec                    r'  )Nc                       r(  )z.TestIntFlag.test_init_subclass.<locals>.MyEnumc                    r)  r*  r,  r0  r1  r]   r^   r-  }  r2  z@TestIntFlag.test_init_subclass.<locals>.MyEnum.__init_subclass__r3  r]   r4  rj   r^   r  |  r5  r  c                       r6  )z1TestIntFlag.test_init_subclass.<locals>.TheirEnumc                    r7  r8  r:  r0  r<  r]   r^   r-    r=  zCTestIntFlag.test_init_subclass.<locals>.TheirEnum.__init_subclass__r3  r]   r>  rj   r^   r9    r  r9  c                   @   r   )z1TestIntFlag.test_init_subclass.<locals>.WhoseEnumc                 [   r  r   r]   r0  r]   r]   r^   r-    r  zCTestIntFlag.test_init_subclass.<locals>.WhoseEnum.__init_subclass__Nr?  r]   r]   r]   r^   r@    r   r@  c                   @   r  )z.TestIntFlag.test_init_subclass.<locals>.NoEnumrr   NrA  r]   r]   r]   r^   rB    r  rB  r/  r;  Fc                   @   r   )z/TestIntFlag.test_init_subclass.<locals>.OurEnumc                 [   rC  rD  rF  r0  r]   r]   r^   r-    r   zATestIntFlag.test_init_subclass.<locals>.OurEnum.__init_subclass__Nr?  r]   r]   r]   r^   rE    r   rE  c                   @   r   )z1TestIntFlag.test_init_subclass.<locals>.WhereEnumc                 [   r  r   r]   r0  r]   r]   r^   r-    r  zCTestIntFlag.test_init_subclass.<locals>.WhereEnum.__init_subclass__Nr?  r]   r]   r]   r^   rG    r   rG  c                   @   r  )z1TestIntFlag.test_init_subclass.<locals>.NeverEnumrr   NrA  r]   r]   r]   r^   rH    r  rH  )r   r	  r0  r  r.  rI  r]   rJ  r^   rK  {  rL  zTestIntFlag.test_init_subclassN)#rl   rm   rn   r   r+  rF  rR  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ra  rc  re  rh  rj  r?  r  r   r  r  rn  ry  rK  r]   r]   r]   r^   r    s>    
6000B
0
(r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestEmptyAndNonLatinStringsc                 C   s:   |  t tdd}W d    d S 1 sw   Y  d S )N	empty_abc)r  r  r  )r  r   r   )rf   r  r]   r]   r^   test_empty_string  s   "z-TestEmptyAndNonLatinStrings.test_empty_stringc                 C   &   t dd}t|d}| |jd d S )N	greek_abc)   αr  r  r  rr   r   rc   r	  r
  )rf   r  itemr]   r]   r^   test_non_latin_character_string     

z;TestEmptyAndNonLatinStrings.test_non_latin_character_stringc                 C   r  )N
hebrew_123)   אr  r  r  rr   r  )rf   r  r  r]   r]   r^   test_non_latin_number_string  r  z8TestEmptyAndNonLatinStrings.test_non_latin_number_stringN)rl   rm   rn   r  r  r  r]   r]   r]   r^   r    s    r  c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	
TestUniquez82.4 doesn't allow class decorators, use function syntax.c                 C   s4   G dd dt }t| G dd dt}t| d S )Nc                   @   rp   )z+TestUnique.test_unique_clean.<locals>.Cleanrr   r  g      @N)rl   rm   rn   r  r  r  r]   r]   r]   r^   Clean  ry   r  c                   @   rp   )z-TestUnique.test_unique_clean.<locals>.Cleanerrr   rs   rt   N)rl   rm   rn   r  doubler  r]   r]   r]   r^   Cleaner  ry   r  )r   r   r   )rf   r  r  r]   r]   r^   test_unique_clean  s   zTestUnique.test_unique_cleanc                 C   s   zG dd dt }t| W n ty"   t d }|jd }Y nw | d|v  zG dd dt}t| W n tyL   t d }|jd }Y nw | d|v  | d	|v  d S )
Nc                   @   r  )z+TestUnique.test_unique_dirty.<locals>.Dirtyzone tworr   r  N)rl   rm   rn   re  r  r  r  r]   r]   r]   r^   Dirty  r   r  rr   r   ztres -> onec                   @   s    e Zd ZdZdZdZdZdZdS )z-TestUnique.test_unique_dirty.<locals>.Dirtierzsingle triplerr   rt   N)rl   rm   rn   re  r  r  r  turkeyr]   r]   r]   r^   Dirtier  r   r  zdouble -> singlezturkey -> triple)r   r   r   r   r   rg   r  r   )rf   r  r   messager  r]   r]   r^   test_unique_dirty  s"   zTestUnique.test_unique_dirtyc                 C   s,   t G dd dt}t G dd dt}d S )Nc                   @   rp   )z/TestUnique.test_unique_with_name.<locals>.Sillyrr   r  rt   Nr  r]   r]   r]   r^   r    r  r  c                   @   r   )z1TestUnique.test_unique_with_name.<locals>.Sillierrr   rs   rt   r~   Nr  r]   r]   r]   r^   r    s
    r  )r   r   r   r  r]   r]   r^   test_unique_with_name  s   z TestUnique.test_unique_with_nameN)rl   rm   rn   r   r  r  r  r]   r]   r]   r^   r    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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d9S ):TestNamedTuplec                 C      G dd dt }|ddd}|ddd}| |d d | |d	 d | |d
 d | |d d | |d	 d | |d
 d | |jd | |jd | |jd | |jd | |jd | |jd d S )Nc                   @   rp   )z5TestNamedTuple.test_explicit_indexing.<locals>.Personr   rr   rs   Nrl   rm   rn   ager  r  r]   r]   r]   r^   Person  ry   r     JohnDoe   Janer   rr   rs   r   r	  r   r  r  rf   r  p1p2r]   r]   r^   test_explicit_indexing  s   z%TestNamedTuple.test_explicit_indexingc                 C   r  )Nc                   @   r   )z5TestNamedTuple.test_implicit_indexing.<locals>.Personage first lastperson's agezperson's first nameperson's last nameN)rl   rm   rn   re  r   r  r  r]   r]   r]   r^   r     r   r  r  r  r  r  r  r   rr   rs   r  r  r]   r]   r^   test_implicit_indexing  s   z%TestNamedTuple.test_implicit_indexingc                 C   s  G dd dt }|dddd}|dddd	}| |d
 d | |d d | |d d | |d d | |d
 d | |d d | |d d | |d d	 | |jd | |jd | |jd | |jd | |jd | |jd	 d S )Nc                   @   r   )z2TestNamedTuple.test_mixed_indexing.<locals>.Personzage last carsr  )rs   r  zperson's carsN)rl   rm   rn   re  r   r  carsr]   r]   r]   r^   r    r   r  r  r  r  rt   r  r  r  r   rr   rs   r   r	  r   r  r  r  r]   r]   r^   test_mixed_indexing  s"   z"TestNamedTuple.test_mixed_indexingc                 C   s4   G dd dt }| t|t  | t|t d S )Nc                   @   rp   )z.TestNamedTuple.test_issubclass.<locals>.Personr   rr   rs   Nr  r]   r]   r]   r^   r  ,  ry   r  r   r  r  r  rf   r  r]   r]   r^   test_issubclass+  s   zTestNamedTuple.test_issubclassc                 C   sP   G dd dt }|ddd}| t|| | t|t  | t|t d S )Nc                   @   rp   )z.TestNamedTuple.test_isinstance.<locals>.Personr   rr   rs   Nr  r]   r]   r]   r^   r  4  ry   r  r  r  r  r   r  rP  r  rf   r  r	  r]   r]   r^   test_isinstance3  s
   zTestNamedTuple.test_isinstancec                 C      t dd}|ddd}|ddd}| |d d | |d	 d | |d
 d | |d d | |d	 d | |d
 d | |jd | |jd | |jd | |jd | |jd | |jd d S )Nr  )r   r   )r  rr   r  rs   r  r  r  r  r  r   rr   rs   r  r  r]   r]   r^   +test_explicit_indexing_after_functional_api=     
z:TestNamedTuple.test_explicit_indexing_after_functional_apic                 C   r  )Nr  r  r  r  r  r  r  r   rr   rs   r  r  r]   r]   r^   +test_implicit_indexing_after_functional_apiN  r  z:TestNamedTuple.test_implicit_indexing_after_functional_apic                 C   s   t dd}|dddd}|dddd	}| |d
 d | |d d | |d d | |d d | |d
 d | |d d | |d d | |d d	 | |jd | |jd | |jd | |jd | |jd | |jd	 d S )Nr  )r  r  )r  rt   r  r  r  rt   r  r  r  r   rr   rs   r  r  r]   r]   r^   (test_mixed_indexing_after_functional_api_  s"   
z7TestNamedTuple.test_mixed_indexing_after_functional_apic                 C   s.   t dd}| t|t  | t|t d S )Nr  r  r  r  r]   r]   r^   $test_issubclass_after_functional_apir  s   
z3TestNamedTuple.test_issubclass_after_functional_apic                 C   sJ   t dd}|ddd}| t|| | t|t  | t|t d S )Nr  r  r  r  r  r  r  r]   r]   r^   $test_isinstance_after_functional_apiw  s
   
z3TestNamedTuple.test_isinstance_after_functional_apic                 C   sv   t dd}|dddd}| |d d | |d d | |d	 d | |jd | |jd | |jd d S )
Nr  r  r  r  r  )r   r  r  r   rr   rs   r  r  r]   r]   r^   test_creation_with_all_keywords~  s   
z.TestNamedTuple.test_creation_with_all_keywordsc                 C   s   t dd}|dddd}| |d d | |d d | |d	 d | |jd | |jd | |jd |dddd
}| |d d | |d d | |d	 d | |jd | |jd | |jd d S )Nr  r  r  r  r  )r  r  r   rr   rs   )r  r  r  r  r]   r]   r^    test_creation_with_some_keywords  s   
z/TestNamedTuple.test_creation_with_some_keywordsc                    sJ   G  fdddt   d}| |jd | |jd | |jd d S )Nc                       s*   e Zd ZdZdZdZ fddZ  ZS )z,TestNamedTuple.test_custom_new.<locals>.Bookr   rr   rs   c                    s0   dd | dD }t | j| gt|R  S )Nc                 S   s   g | ]}|  qS r]   )rC  )r  r  r]   r]   r^   r    s    zHTestNamedTuple.test_custom_new.<locals>.Book.__new__.<locals>.<listcomp>r  )r  rd   r(  r  )r,  r  rg   )Bookrk   r]   r^   r(    s   z4TestNamedTuple.test_custom_new.<locals>.Book.__new__)rl   rm   rn   r  authorgenrer(  ro   r]   r$  rj   r^   r$    s
    r$  z&The Last Mohican; John Doe; HistoricalzThe Last MohicanJohn Doe
Historical)r   r	  r  r%  r&  )rf   b1r]   r'  r^   test_custom_new  s
   zTestNamedTuple.test_custom_newc                 C   s|   G dd dt }ddiddddd	d
dd	ddfD ]!}|di |}dD ]\}}||v r1|| }| t||| q%qd S )Nc                   @   rp   )z8TestNamedTuple.test_defaults_in_class.<locals>.Characterr   )rr   Nr  )rs   NfighterN)rl   rm   rn   r  genderklassr]   r]   r]   r^   	Character  ry   r/  r  r(  zWilliam Pickneyscholar)r  r.  zSarah Doughteryr  )r  r-  zSissy Moonbeam	sorceress)r  r-  r.  )r  )r-  r  )r.  r,  r]   )r   r	  rc   )rf   r/  charr#  r  r
  r]   r]   r^   test_defaults_in_class  s   
z%TestNamedTuple.test_defaults_in_classc                 C   s6   G dd dt }| }| |jd | |jd d S )Nc                   @   r   )zDTestNamedTuple.test_defaults_in_class_that_are_falsey.<locals>.Point)r   zhorizondal coordinater   )rr   vertical coordinater   Nr3  r]   r]   r]   r^   Point  r   r5  r   )r   r	  r4  r5  )rf   r5  rn  r]   r]   r^   &test_defaults_in_class_that_are_falsey  s   z5TestNamedTuple.test_defaults_in_class_that_are_falseyc                 C   *   t ttrttddd}t| j| d S )Nr}  r{  r  )rP  r   r   r   r	  )rf   lfr]   r]   r^   "test_pickle_namedtuple_with_module     
z1TestNamedTuple.test_pickle_namedtuple_with_modulec                 C   r7  )Nzsickly green2x4foul)rP  r   r   r   r	  )rf   dfr]   r]   r^   %test_pickle_namedtuple_without_module  r:  z4TestNamedTuple.test_pickle_namedtuple_without_modulec                 C   sF   t ttrttdd}| |jd | | d t| j| d S )NHenry	Weinhardt)rP  r   r   r	  r   r  r   r   )rf   tir]   r]   r^   r    s   

zTestNamedTuple.test_subclassingc                 C   sD   t dd}|ddd}| d|v  | d|v  | d|v  d S )Nr$  ztitle author genreTecklaSteven Brustfantasy)r   r  rf   r$  r  r]   r]   r^   r    s
   
zTestNamedTuple.test_containsc                 C   s   G dd dt }|ddd}| d|v  | d|v  | d|v  | |jd | |jd | t|dd | t|d d S )Nc                   @      e Zd ZejZdZdZdZdS )z,TestNamedTuple.test_fixed_size.<locals>.Bookr   rr   rs   N)	rl   rm   rn   r   fixed_size_r  r%  r&  r]   r]   r]   r^   r$    
    r$  rB  rC  rD  r   r  r	  r  r%  r  r   rE  r]   r]   r^   test_fixed_size  s   zTestNamedTuple.test_fixed_sizec                 C   s   G dd dt }|ddd}| d|v  | d|v  | d|v  | |jd | |jd |dd}| d|v  | d|v  | |jd | |jd | t|d d S )Nc                   @   s   e Zd ZejZdZdZdS )z.TestNamedTuple.test_minimum_size.<locals>.Bookr   rr   N)rl   rm   rn   r   minimumrH  r  r%  r]   r]   r]   r^   r$    s    r$  rB  rC  rD  rJ  rE  r]   r]   r^   test_minimum_size  s   
z TestNamedTuple.test_minimum_sizec                 C   s   G dd dt }|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                   @   rF  )z/TestNamedTuple.test_variable_size.<locals>.Bookr   rr   rs   N)	rl   rm   rn   r   variablerH  r  r%  r&  r]   r]   r]   r^   r$    rI  r$  rB  rC  rD  r&  )r  r&  )r%  )
r   r  r	  r  r%  r&  r  r  rc   r   rE  r]   r]   r^   test_variable_size  s    
z!TestNamedTuple.test_variable_sizec                 C   sn  G dd dt }G dd dt }t d|| td}G dd d||}G d	d
 d
|}| |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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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 d S )Nc                   @   r   )z8TestNamedTuple.test_combining_namedtuples.<locals>.Pointr   horizontal coordinaterr   rr   r4  rP   Nr3  r]   r]   r]   r^   r5    r   r5  c                   @   rp   )z8TestNamedTuple.test_combining_namedtuples.<locals>.Colorr   red componentrX  rr   green component   rs   blue component%   Nrl   rm   rn   ra  rb  r  r]   r]   r]   r^   r     ry   r   Pixelr   c                   @   r  )z9TestNamedTuple.test_combining_namedtuples.<locals>.Pixel2za colored dotN)rl   rm   rn   r   r]   r]   r]   r^   Pixel2  r  r]  c                   @   rp   )z9TestNamedTuple.test_combining_namedtuples.<locals>.Pixel3)rs   rT  rX  )rt   rV  rW  )r~   rY  rZ  Nr[  r]   r]   r]   r^   Pixel3  ry   r^  z	x y r g brQ  rr   r4  rP   rT  rX  rV  rW  rY  rZ  )r   rl   r	  _fields_r  r4  r   defaultr5  ra  rb  r  )rf   r5  r   Pixel1r]  r^  r]   r]   r^   test_combining_namedtuples  sL   z)TestNamedTuple.test_combining_namedtuplesc                 C   s`   G dd dt }|dg d}|dd}|dd}| |d	 | t|d
 | |jd d S )Nc                   @   s$   e Zd Zedd Zedd ZdS )z=TestNamedTuple.test_inherit_from_existing.<locals>.OERecTuplec                 S   s   |d   S r  )rv  )r,  recr]   r]   r^   
record_keyE  s   zHTestNamedTuple.test_inherit_from_existing.<locals>.OERecTuple.record_keyc                 S   s   |  ||d< d S )NrP   )rd  rM  r]   r]   r^   _review_I  s   zFTestNamedTuple.test_inherit_from_existing.<locals>.OERecTuple._review_N)rl   rm   rn   r  rd  re  r]   r]   r]   r^   
OERecTupleC  s
    
rf  OERec)rc  xmlidr  rr   abc123rs   xyz789)rr   ri  ABC123rt   rk  )r   r	  r  r  )rf   rf  rg  oe_1oe_2r]   r]   r^   test_inherit_from_existingB  s   

z)TestNamedTuple.test_inherit_from_existingc                 C   sF   G dd dt }t dd|d}|ddd}| | d	g d
f d S )Nc                   @   r   )z5TestNamedTuple.test_function_api_type.<locals>.Testerc                 S   s   dt t| fS )N	backwards)r  rR  r   r]   r]   r^   howdyW  r6  z;TestNamedTuple.test_function_api_type.<locals>.Tester.howdyN)rl   rm   rn   rp  r]   r]   r]   r^   TesterV  r   rq  Testeeza c erl  rr   rs   rt   ro  )rt   rs   rr   )r   r	  rp  )rf   rq  rr  rw  r]   r]   r^   test_function_api_typeU  s   z%TestNamedTuple.test_function_api_typec              	   C   sb   G dd dt }G dd dt }t d|| td}|ddd	d
d}| | ddd	d
dd d S )Nc                   @   r   )z)TestNamedTuple.test_asdict.<locals>.PointrP  rR  Nr3  r]   r]   r]   r^   r5  ^  r   r5  c                   @   rp   )z)TestNamedTuple.test_asdict.<locals>.ColorrS  rU  rX  Nr[  r]   r]   r]   r^   r   a  ry   r   r\  r   r  i   r%  r   )r4  r5  ra  rb  r  )r   rl   r	  _asdict)rf   r5  r   r\  pixelr]   r]   r^   test_asdict]  s
    zTestNamedTuple.test_asdictc                 C   s8   G dd dt }| |ddd | |dd d S )Nc                   @   r   )z'TestNamedTuple.test_make.<locals>.PointrP  rR  Nr3  r]   r]   r]   r^   r5  j  r   r5  r~   r   )r~   r   )r   r	  _make)rf   r5  r]   r]   r^   	test_makei  s   zTestNamedTuple.test_makec                 C   s8   G dd dt }|ddd}|jdd}| |d d S )Nc                   @   rp   )z*TestNamedTuple.test_replace.<locals>.ColorrS  rU  rX  Nr[  r]   r]   r]   r^   r   q  ry   r      r   )rb  )rz  rz  rz  )r   _replacer	  )rf   r   r   mid_grayr]   r]   r^   test_replacep  s   zTestNamedTuple.test_replaceN)rl   rm   rn   r  r  r  r  r  r  r  r  r   r!  r"  r#  r+  r3  r6  r9  r>  r  r  rK  rM  rO  rb  rn  rs  rw  ry  r}  r]   r]   r]   r^   r    s:    

1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S )TestNamedConstantc                 C   s   G dd dt }| |jd | |jd|j  | td d|_W d    n1 s-w   Y  | td
 |`W d    n1 sEw   Y  | td |dd	 W d    n1 s`w   Y  | |j|v  | |j|v  d S )
Nc                   @   r  )z.TestNamedConstant.test_constantness.<locals>.Kr  rs   N)rl   rm   rn   r  r	  r]   r]   r]   r^   K}  rx  r  r  rs   r  r  r  r  rt   )r   r	  r  r	  ra   r  r  )rf   r  r]   r]   r^   test_constantness|  s   z#TestNamedConstant.test_constantnessc                 C   sD   G dd dt }| |j|ju  | |j|j | |jd d S )Nc                   @   s@   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S )z5TestNamedConstant.test_duplicates.<locals>.CardNumberrX  rs   rt   r~   r   ra  r  r   r  r  N)rl   rm   rn   ACEr  r  r  r  r  r  r  NINETENJACKQUEENKINGr]   r]   r]   r^   
CardNumber  s    r  r  )r   r  r  r  r	  )rf   r  r]   r]   r^   test_duplicates  s   z!TestNamedConstant.test_duplicatesc                 C   sX   G dd dt }| |jd |dd}| ||j | |jd | |j|v  d S )Nc                   @   r   )z9TestNamedConstant.test_extend_constants.<locals>.CardSuitrr   rs   rt   r~   N)rl   rm   rn   HEARTSSPADESDIAMONTSCLUBSr]   r]   r]   r^   CardSuit  r   r  rr   STARSr   )r   r	  r  r,  r  r  )rf   r  starsr]   r]   r^   test_extend_constants  s   
z'TestNamedConstant.test_extend_constantsc                 C   sn   G dd dt }| |jd | |jjd | |jd | |jjd  | |jd | |jjd d S )Nc                   @   s$   e Zd ZeddZdZeddZdS )z=TestNamedConstant.test_constant_with_docstring.<locals>.Stuffr  lucky number!rX  rW  	blah blahN)rl   rm   rn   r   ArtifactBowlingHillWompr]   r]   r]   r^   Stuff  s    
r  r  r  rX  rW  r  )r   r	  r  r   r  r  )rf   r  r]   r]   r^   test_constant_with_docstring  s   z.TestNamedConstant.test_constant_with_docstringc                 C   sN   dd l }G dd dtj}|d d|ji}|| | |d |ju  d S )Nr   c                   @   r   )z2TestNamedConstant.test_deep_copy.<locals>.APITypesr  r!  N)rl   rm   rn   STRINGINTr]   r]   r]   r^   APITypes  r   r  r  r  )copyrV   Constantr  deepcopyr  )rf   r  r  rU  r]   r]   r^   test_deep_copy  s   

z TestNamedConstant.test_deep_copyc                    sN   G dd dt j G  fdddt j}|  j|j |  j|ju  d S )Nc                   @   r   )z9TestNamedConstant.test_subclass_w_same_value.<locals>.Foobla1aba1Nrl   rm   rn   BLAABAr]   r]   r]   r^   r    r   r  c                       s   e Zd Z jZdZdS )z9TestNamedConstant.test_subclass_w_same_value.<locals>.Baraba2Nr  r]   r  r]   r^   r    s    r  )rV   r  r	  r  r  )rf   r  r]   r  r^   test_subclass_w_same_value  s   z,TestNamedConstant.test_subclass_w_same_valueN)	rl   rm   rn   r  r  r  r  r  r  r]   r]   r]   r^   r~  z  s    
r~  c                   @   r   )TestStarImportc                 C   s    i }t d|| | d| d S )Nzfrom aenum import *r   )execr.  )rf   scoper]   r]   r^   test_all_exports_names  s   z%TestStarImport.test_all_exports_namesN)rl   rm   rn   r  r]   r]   r]   r^   r    s    r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestStackoverflowAnswersc                 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Zdd ZdS )	zMTestStackoverflowAnswers.test_self_referential_directions.<locals>.DirectionszNORTH WEST SOUTH EASTrr   r   )r   rr   )rP   r   )r   rP   c                 S   sR   || _ || _t| jr't| j}|d |d }}|| _|| _| |_| |_d S d S Nr   rP   )r4  r5  r  rk   r  r  r  )rf   r4  r5  allr  r  r]   r]   r^   re     s   


zVTestStackoverflowAnswers.test_self_referential_directions.<locals>.Directions.__init__N)	rl   rm   rn   r   r  r  r  r  re   r]   r]   r]   r^   
Directions  s    r  r  )	r   r	  r  r
  r  r  r  r  r  )rf   r  r  r]   r]   r^    test_self_referential_directions  s
   z9TestStackoverflowAnswers.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                   @   r  )zOTestStackoverflowAnswers.test_self_referential_rock_paper_scissors.<locals>.RPSzRock, Paper, Scissorsrockpaperscissorsc                 S   s:   t | jrt| j}|d |d }}| |_|| _d S d S r  )r  rk   r  beats)rf   r
  r  r  previousr]   r]   r^   re     s   


zXTestStackoverflowAnswers.test_self_referential_rock_paper_scissors.<locals>.RPS.__init__N)rl   rm   rn   r   RockPaperScissorsre   r]   r]   r]   r^   RPS  s    r  )r   r  r  r  r  r  )rf   r  r]   r]   r^   )test_self_referential_rock_paper_scissors  s   zBTestStackoverflowAnswers.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>TestStackoverflowAnswers.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__headerr  zinitial header stuff here
z#define %s %r
)rl   rc   rX  r  r  r
  )r,  rh   cls_nameheader_pathfhr#   r]   r]   r^   r-    s   
"zPTestStackoverflowAnswers.test_arduino_headers.<locals>.CHeader.__init_subclass__Nr?  r]   r]   r]   r^   CHeader  r   r  c                   @   s&   e Zd ZdZejedZdZ	dZ
dS )z>TestStackoverflowAnswers.test_arduino_headers.<locals>.ArduinozONE TWO	arduino.hrr   rs   N)rl   rm   rn   r   r  r  r   r  _Arduino__headerr  r  r]   r]   r]   r^   Arduino  s
    r  r  zv                initial header stuff here
                #define ONE 1
                #define TWO 2
                )
r   rX  r  r  r   r  readr	  textwrapdedent)rf   r  r  r  r  r]   r]   r^   test_arduino_headers  s   	
z-TestStackoverflowAnswers.test_arduino_headersc                    s:   G  fdddt  G dd d t}| |d d S )Nc                       s*   e Zd Z fddZedd Z  ZS )zITestStackoverflowAnswers.test_lowercase_compare.<locals>.CompareLowerCasec                    s.   t  | jdi | tdd | D | _d S )Nc                 S   s   g | ]}|j  qS r]   rw  r  r]   r]   r^   r  #  s    zoTestStackoverflowAnswers.test_lowercase_compare.<locals>.CompareLowerCase.__init_subclass__.<locals>.<listcomp>r]   )rd   r-  r  lowered_namesr0  )CompareLowerCaserk   r]   r^   r-  !  s   z[TestStackoverflowAnswers.test_lowercase_compare.<locals>.CompareLowerCase.__init_subclass__c                 S   s   |  | jv S r   )rx  r  rg  r]   r]   r^   has_name$  r  zRTestStackoverflowAnswers.test_lowercase_compare.<locals>.CompareLowerCase.has_name)rl   rm   rn   r-  r  r  ro   r]   r  rj   r^   r     s    r  c                   @   r   )zBTestStackoverflowAnswers.test_lowercase_compare.<locals>.LabelEnumzEnum OnezEnum Twoz
Enum Threer  r  r  N)	rl   rm   rn   ENUM_ONEENUM_TWO
ENUM_THREEr  r  r  r]   r]   r]   r^   	LabelEnum(  r   r  
Enum_Three)r   r   r  r  )rf   r  r]   r  r^   test_lowercase_compare  s   z/TestStackoverflowAnswers.test_lowercase_compareN)rl   rm   rn   r  r  r  r  r]   r]   r]   r^   r    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dS ) TestExtendEnumc                 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                   @   rp   )z4TestExtendEnum.test_extend_enum_plain.<locals>.Colorrr   rs   rt   Nr  r]   r]   r]   r^   r   6  ry   r   zalready in use asr   r   brownr~   mauve)r   ra   r   r!   r	  r  r  r
  r  r  r  r   r]   r]   r^   test_extend_enum_plain5  s    
z%TestExtendEnum.test_extend_enum_plainc                 C   s   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                   @   rp   )z4TestExtendEnum.test_extend_enum_alias.<locals>.Colorrr   rs   rt   Nr  r]   r]   r]   r^   r   M  ry   r   r  rr   r   rt   )	r   r!   r	  r  r  r
  r  r   r  r   r]   r]   r^   test_extend_enum_aliasL  s   z%TestExtendEnum.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                   @   rp   )z5TestExtendEnum.test_extend_enum_unique.<locals>.Colorrr   rs   rt   Nr  r]   r]   r]   r^   r   Z  ry   r   z0<Color.rojo: 1> is a duplicate of <Color.red: 1>r  rr   r   r   rs   r   rt   r  r~   r  r   r  r   )r   ra   r   r!   r	  r   r  r
  r  r   r   r  r  r  r   r]   r]   r^   test_extend_enum_uniqueY  s@   
z&TestExtendEnum.test_extend_enum_uniquec                 C   s   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                   @   rp   )z>TestExtendEnum.test_extend_enum_shadow_property.<locals>.Colorrr   rs   rt   Nr  r]   r]   r]   r^   r     ry   r   r
  r~   rr   )r   r!   r	  r
  r  r  r  r   r   r]   r]   r^    test_extend_enum_shadow_property  s   z/TestExtendEnum.test_extend_enum_shadow_propertyc                 C   sf   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:TestExtendEnum.test_extend_enum_shadow_base.<locals>.hohumc                 S   r  )r  r  r   r]   r]   r^   rK    r  z?TestExtendEnum.test_extend_enum_shadow_base.<locals>.hohum.cyanN)rl   rm   rn   rK  r]   r]   r]   r^   r    r   r  c                   @   rp   )z:TestExtendEnum.test_extend_enum_shadow_base.<locals>.Colorrr   rs   rt   Nr  r]   r]   r]   r^   r     ry   r   zalready in use in superclassrK  r~   rt   )r'  r   ra   r   r!   r	  r  r  r   r   r   )rf   r  r   r]   r]   r^   test_extend_enum_shadow_base  s
    z+TestExtendEnum.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                   @   rp   )z9TestExtendEnum.test_extend_enum_multivalue.<locals>.Colorrr   r~   r  rs   r   r   rt   ra  r  Nr  r]   r]   r]   r^   r     ry   r   r  r  r  r~   z'no values specified for MultiValue enumr  )
r   r!   r	  r  r  r
  r  r  ra   r   r   r]   r]   r^   test_extend_enum_multivalue  s   z*TestExtendEnum.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                   @   rp   )z?TestExtendEnum.test_extend_enum_multivalue_alias.<locals>.Colorr  r  r  Nr  r]   r]   r]   r^   r     ry   r   z0<Color.rojo: 7> is a duplicate of <Color.red: 1>r  r  r   rr   r~   r   rs   r   r   r   rt   ra  r  )r   ra   r   r!   r	  r   r  r
  r  r   r   r  r   r]   r]   r^   !test_extend_enum_multivalue_alias  s.   z0TestExtendEnum.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                   @   rp   )z9TestExtendEnum.test_extend_enum_multivalue_str.<locals>.M)value_1VALUE_1)value_2VALUE_2)value_3VALUE_3N)rl   rm   rn   r  r  r  r]   r]   r]   r^   M  ry   r  VALUE_4value_4)r?  r   r  r]  r!   r	  r  r  r  r  r  r  r
  )rf   r  r]   r]   r^   test_extend_enum_multivalue_str  s    z.TestExtendEnum.test_extend_enum_multivalue_strc                 C   s   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                   @   r   )z1TestExtendEnum.test_extend_intenum.<locals>.Index   i  N)rl   rm   rn   
DeviceTypeErrorRegisterr]   r]   r]   r^   Index  r   r  ))ControlWordi@`  )
StatusWordA`  )OperationModei``  r   r  r  )r   r!   r	  r  r  r  r  r  r  r  r
  )rf   r  r  r
  r]   r]   r^   test_extend_intenum  s   $z"TestExtendEnum.test_extend_intenumc                 C   s  zddl m} t|}W n ty   G dd dt}d}Y nw 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 )Nr   )
HTTPStatusc                   @   s    e Zd Zdd ZdZdZdZdS )z9TestExtendEnum.test_extend_multi_init.<locals>.HTTPStatusc                 S   s"   t | |}||_||_||_|S r   )r!  r(  r)  phraser  )r,  r
  r  r  r   r]   r]   r^   r(    s
   zATestExtendEnum.test_extend_multi_init.<locals>.HTTPStatus.__new__r  r  )r  r  r  N)rl   rm   rn   r(  rr  rs  rt  r]   r]   r]   r^   r    s
    r  rt   BAD_SPAMi  z
Too greasyzfor a trainBAD_EGGSi  z	Too greenr  rs   )httpr  r  ImportErrorr   r!   r	  r  r  r  r
  r  r  r  )rf   r  lengthr]   r]   r^   test_extend_multi_init  s,   
z%TestExtendEnum.test_extend_multi_initc                 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  d S )Nc                   @   r   )z.TestExtendEnum.test_extend_flag.<locals>.Colorr   rr   rs   r~   Nrl   rm   rn   ry  r  r  r  r]   r]   r]   r^   r   
  r   r   r{  r   r  rX  )	r   r!   r  r{  rP  r	  r
  r  r  r   r]   r]   r^   test_extend_flag	  s   
zTestExtendEnum.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                   @   r   )z8TestExtendEnum.test_extend_flag_backwards.<locals>.Colorr   rr   rs   r~   Nr  r]   r]   r]   r^   r     r   r   r  rX  r{  r   r  r  r   )r   r!   r  r  rP  r	  r
  r  r{  r  r  r  r   r]   r]   r^   test_extend_flag_backwards  "   

z)TestExtendEnum.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                   @   r   )z1TestExtendEnum.test_extend_intflag.<locals>.Colorr   rr   rs   r~   Nr  r]   r]   r]   r^   r   3  r   r   r{  r   r  rX  r  r  r   )r   r!   r  r{  rP  r	  r
  r  r  r   r  r  r  r   r]   r]   r^   test_extend_intflag2  s"   

z"TestExtendEnum.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                   @   r   )z;TestExtendEnum.test_extend_intflag_backwards.<locals>.Colorr   rr   rs   r~   Nr  r]   r]   r]   r^   r   K  r   r   r  rX  r{  r   r  r  r   )r   r!   r  r  rP  r	  r
  r  r   r{  r  r  r  r   r]   r]   r^   test_extend_intflag_backwardsJ  r  z,TestExtendEnum.test_extend_intflag_backwardsc                 C   sN   G dd dt }t|d | |jjd | |jjd | t|d d S )Nc                   @   s   e Zd Ze Ze Ze ZdS )z1TestExtendEnum.test_extend_strenum.<locals>.ColorN)rl   rm   rn   r"   r  r  r  r]   r]   r]   r^   r   d  s    
r   ry  rN  r~   )r   r!   r	  ry  r  r
  r  r   r]   r]   r^   test_extend_strenumc  s
   
z"TestExtendEnum.test_extend_strenumN)rl   rm   rn   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r]   r]   r]   r^   r  3  s     *!r  c                   @   r}  )
TestIssuesc                 C   s   G dd dt tt}| 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|   )z3TestIssues.test_auto_multi_int.<locals>.Measurementrk  r   201107212012091120110518N)rl   rm   rn   r   r(  r  r  rC  r]   r]   r]   r^   Measurementq  r   r	  c                 S   r  r]   r  r  r]   r]   r^   r  w  r  z2TestIssues.test_auto_multi_int.<locals>.<listcomp>r$  c                 S   r  r]   r  r  r]   r]   r^   r  x  r  )r  r  rC  r	  r   r	  rr   r	  rs   )r!  r   r   r	  r,  r  r  rC  )rf   r	  r]   r]   r^   test_auto_multi_intp  s   zTestIssues.test_auto_multi_intc                 C   sb   G dd dt }| |jj|jj|jjfddi f | |jj|jj|jjfdd|jdif d S )Nc                   @   s4   e Zd ZdZedi dZededidZdd ZdS )	z'TestIssues.test_auto_kwds.<locals>.Itemr  r  r	  requirementsr  rr   c                 S   N   t | }||_||_i }| D ]\}}t|tr|j}|||< q||_|S r   	r'  r(  r)  r	  r  rP  r"   enum_memberr	  r,  r
  r	  r	  r   new_requirementsr  r  r]   r]   r^   r(       


z/TestIssues.test_auto_kwds.<locals>.Item.__new__Nr  r]   r]   r]   r^   r    s
    r  rr   r  rs   r  r   r	  r  r
  r	  r	  r  r  r]   r]   r^   test_auto_kwds  s   $.zTestIssues.test_auto_kwdsc                 C   sb   G dd dt }| |jj|jj|jjfddi f | |jj|jj|jjfdd|jdif d S )Nc                   @   s<   e Zd ZdZdd Zedi dZededidZdd	 Zd
S )z/TestIssues.test_auto_kwds_and_gnv.<locals>.Itemr  c                 _   r  r   r]   r  r]   r]   r^   r    r  zETestIssues.test_auto_kwds_and_gnv.<locals>.Item._generate_next_value_r  r	  r  rr   c                 S   r	  r   r		  r	  r]   r]   r^   r(    r	  z7TestIssues.test_auto_kwds_and_gnv.<locals>.Item.__new__N)	rl   rm   rn   r   r  r"   r  r  r(  r]   r]   r]   r^   r    s    r  r  r  r  r  rr   r	  r  r]   r]   r^   test_auto_kwds_and_gnv  s   $.z!TestIssues.test_auto_kwds_and_gnvc                 C   sN   G dd dt }t|dd | |j|jB |d | |j|jB jd d S )Nc                   @   rp   )z-TestIssues.test_extend_flag.<locals>.FlagTestr   rr   rs   N)rl   rm   rn   r]  LOWMIDr]   r]   r]   r^   FlagTest  ry   r	  HIGHr~   r   )r   r!   r	  r	  r	  r
  )rf   r	  r]   r]   r^   r    s   zTestIssues.test_extend_flagc                 C   s4   G dd dt }t j}ddd}t||| d S )Nc                   @   s    e Zd ZdddZdddZdS )z3TestIssues.test_extend_unhashable.<locals>.TestEnumr   abcrc  r
  rr   defN)rl   rm   rn   ABCDEFr]   r]   r]   r^   r    s    
r  r  newr	  )r   uuiduuid4r+  r!   )rf   r  randr  r]   r]   r^   test_extend_unhashable  s   
	z!TestIssues.test_extend_unhashableN)rl   rm   rn   r	  r	  r	  r  r	  r]   r]   r]   r^   r 	  n  s    	r 	  r   r~   r  goodbyehellor  rr   r
                ?               @              @c                   @   s\   e Zd Zdd Zdd Zdd Zeeddd	 Z	eedd
d Z
dd Zdd ZdS )TestConvertc                 C   s   t  }dD ]}d|d| < d|d| < qdD ]
\}}||d| < qdD ]
\}}||d| < q#d	D ]
\}}||d
| < q0d|d< d|d< d|d< d|d< d S )N)r  r  r  r  r  r  r   zCONVERT_TEST_NAME_%szCONVERT_STRING_TEST_NAME_%s))r  r   )r  r!	  )r  r
  zUNCOMPARABLE_%s))r  r#	  )r  r$	  )r  r"	  z
COMPLEX_%s))rG  r 	  )r  r	  zCONVERT_STR_TEST_%sr~   CONVERT_TEST_SIGABRTCONVERT_TEST_SIGIOTr  CONVERT_TEST_EIOCONVERT_TEST_EBUS)r>  )rf   rb  suffixr
  r]   r]   r^   tearDown  s   zTestConvert.tearDownc                 C   sj   t jdtdd d}| |djd | |djd | |d	jd
 | t||j|j|jg d S )NUnittestConvertc                 S   
   |  dS NCONVERT_TEST_
startswithr4  r]   r]   r^   r    r  z@TestConvert.test_convert_value_lookup_priority.<locals>.<lambda>filterr   CONVERT_TEST_NAME_Ar~   r&	  r  r)	  )	r   	_convert_MODULEr	  r  r  r&	  r5	  r)	  rf   r  r]   r]   r^   "test_convert_value_lookup_priority  s   z.TestConvert.test_convert_value_lookup_priorityc                    s   t jdtdd d |  j j |  jd |  jd |  jd |  j	d t
tg d } fddt
 D } fd	dt D }| j|| g d
||f d d S )Nr,	  c                 S   r-	  r.	  r0	  r2	  r]   r]   r^   r    r  z.TestConvert.test_convert_int.<locals>.<lambda>r3	  r   )
r5	  CONVERT_TEST_NAME_BCONVERT_TEST_NAME_CCONVERT_TEST_NAME_DCONVERT_TEST_NAME_ECONVERT_TEST_NAME_Fr&	  r'	  r(	  r)	  c                       g | ]
}|t  vr|qS r]   enum_dirr  r  r  r]   r^   r  (      z0TestConvert.test_convert_int.<locals>.<listcomp>c                    r?	  r]   dirrB	  rC	  r]   r^   r  )  rD	  #extra names: %r;  missing names: %rmsg)r   r6	  r7	  r	  r>	  r5	  r:	  r;	  r<	  r=	  rF	  r!  rA	  )rf   int_dirextramissingr]   rC	  r^   test_convert_int  s(   

zTestConvert.test_convert_intz$everything is comparable on Python 2c                 C   s:   t jdtdd d}| t||j|j|jgt| d S )NUncomparablec                 S   r-	  )NUNCOMPARABLE_r0	  r2	  r]   r]   r^   r  5  r  z7TestConvert.test_convert_uncomparable.<locals>.<lambda>r3	  )r   r6	  r7	  r	  r  UNCOMPARABLE_AUNCOMPARABLE_BUNCOMPARABLE_Crf   uncompr]   r]   r^   test_convert_uncomparable0  s   z%TestConvert.test_convert_uncomparablec                 C   s4   t jdtdd d}| t||j|j|jg d S )NrN	  c                 S   r-	  )NCOMPLEX_r0	  r2	  r]   r]   r^   r  B  r  z2TestConvert.test_convert_complex.<locals>.<lambda>r3	  )r   r6	  r7	  r	  r  	COMPLEX_A	COMPLEX_B	COMPLEX_CrS	  r]   r]   r^   test_convert_complex=  s   z TestConvert.test_convert_complexc                    s   t jdtdd dd |  jd |  jd  fdd	t D } fd
d	t D }| j|| g d||f d | t jdt	  | t
 jd | t jd d S )Nr,	  c                 S   r-	  )NCONVERT_STR_r0	  r2	  r]   r]   r^   r  M  r  z.TestConvert.test_convert_str.<locals>.<lambda>Tr4	  	as_globalr 	  r	  c                    r?	  r]   r@	  rB	  rC	  r]   r^   r  S  rD	  z0TestConvert.test_convert_str.<locals>.<listcomp>c                    r?	  r]   rE	  rB	  rC	  r]   r^   r  T  rD	  rG	  rH	  z%s.CONVERT_STR_TEST_1)r   r6	  r7	  r	  CONVERT_STR_TEST_1CONVERT_STR_TEST_2rF	  rA	  r  SHORT_MODULEr?  r  )rf   rK	  rL	  r]   rC	  r^   test_convert_strI  s$   
zTestConvert.test_convert_strc                 C   sT   t jdtdd dd}| t|jdt  | t|jd | t|jd d S )Nr,	  c                 S   r-	  )NCONVERT_STRING_TEST_r0	  r2	  r]   r]   r^   r  b  r  z7TestConvert.test_convert_repr_and_str.<locals>.<lambda>Tr\	  z%s.CONVERT_STRING_TEST_NAME_Ar  )	r   r6	  r7	  r	  r  CONVERT_STRING_TEST_NAME_Ar`	  r?  r  r8	  r]   r]   r^   test_convert_repr_and_str^  s   z%TestConvert.test_convert_repr_and_strN)rl   rm   rn   r+	  r9	  rM	  r  r  r.   rU	  rZ	  ra	  rd	  r]   r]   r]   r^   r%	    s    



r%	  c                 C   s   t | jg d }| jtjur|d | jtjur|d ttdr)|d dD ]}t	| |t	t|t	t
|fvrA|| q+| jtu rKt|S tt t| j|B S )N)	rk   __contains__r   r  r  r  rW  rm   rl   r(  r-  rn   )re   r  r  rP  )r  _member_names__new_member_r'  r(  rB   r-  r   r  rc   r   r]  r  rF	  )r,  interestingmethodr]   r]   r^   rA	  j  s   





rA	  c                 C   s   | j jtu rtg d}ntt| }| j  D ]4}|j D ],\}}|d dkr*qt|t	j
rF|jd us:|| jvr@|| q|| q|| qqt|S )N)rk   r   r]  rN  rm   r  r
  r   r  )rk   r]  r'  r  rF	  r  r0  r  rP  r#   r  r   r  rB   discardr  )r%   allowedr,  r  r   r]   r]   r^   
member_dir  s   
rl	  __main__F)exitz%s: %sT)
__future__r   r   r   rV   rT   r  shutiltempfiler  r  r	  warningsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   aenum._enumr6   rh  r7   r*  r8   pickler9   r:   r;   r<   operatorr=   r  r>   r  r?   r  r@   r  rA   r  rB   r  rC   r  rD   r  rE   r  rF   r  rG   r  rH   r  rI   r  rJ   r  rK   r  rL   r  rM   r  rn  r  rN   	NameErrorrl   r7	  r  r`	  r_   r`   rq   r   r   r!  rz   r)  r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  test_v37r   r'  r   r   r   r~  r  r  ru  r  r  r  r  r  r~  r  r  r  r 	  r<	  r;	  r:	  r5	  r=	  r>	  r&	  r'	  r(	  r)	  CONVERT_STRING_TEST_NAME_DCONVERT_STRING_TEST_NAME_CCONVERT_STRING_TEST_NAME_Brc	  CONVERT_STRING_TEST_NAME_ECONVERT_STRING_TEST_NAME_Fr_	  r^	  rP	  rR	  rQ	  rY	  rW	  rX	  r%	  rA	  rl	  mkdtempr  r  mainstdoutflushresultskippedr  reasonr  rmtreern	  r  r  r   r]   r]   r]   r^   <module>   s  ($$00	

 
l   % (                        x         6     V8   Qa  =^~

,*