B
    18\             
   @   s  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 d dl mZmZm	Z	m
Z
mZmZmZ d dlmZ d dlmZmZmZmZ d dlmZ d dlmZ yd dlZW n ek
r   dZY nX yG dd	 d	eZW n& ek
r Z zeZW ddZ[X Y nX yG d
d deeZW n( ek
r4 Z zeZW ddZ[X Y nX yG dd deeZ W n( ek
rt Z zeZ W ddZ[X Y nX yG dd de
Z!W n( ek
r Z zeZ!W ddZ[X Y nX y&G dd de"eZ#G dd de#Z$W n( ek
r Z zeZ$W ddZ[X Y nX yedde%dZ&W n( ek
r> Z zeZ&W ddZ[X Y nX yeddZ'W n( ek
rv Z zeZ'W ddZ[X Y nX yeddddZ(W n( ek
r Z zeZ(W ddZ[X Y nX yG dd deZ)W n ek
r   Y nX d=dd Z*d!d" Z+G d#d$ d$ej,Z-G d%d& d&Z.G d'd( d(ej,Z/G d)d* d*ej,Z0G d+d, d,ej,Z1G d-d. d.ej,Z2G d/d0 d0ej,Z3G d1d2 d2ej,Z4d3Z5d4Z6G d5d6 d6ej,Z7G d7d8 d8ej,Z8d9Z9d9Z:d9Z;d9Z<d9Z=d9Z>G d:d; d;ej,Z?e%d<kre@  dS )>    N)OrderedDict)EnumIntEnumEnumMetaFlagIntFlaguniqueauto)StringIO)dumpsloadsPicklingErrorHIGHEST_PROTOCOL)support)	timedeltac               @   s   e Zd ZdZdZdZdS )Stooges         N)__name__
__module____qualname__LARRYCURLYMOE r   r   R/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_enum.pyr      s   r   c               @   s   e Zd ZdZdZdZdS )
IntStoogesr   r   r   N)r   r   r   r   r   r   r   r   r   r   r      s   r   c               @   s   e Zd ZdZdZdZdS )FloatStoogesg=
ףp=?g(\@gR$_	$	@N)r   r   r   r   r   r   r   r   r   r   r   $   s   r   c               @   s   e Zd ZdZdZdZdS )FlagStoogesr   r   r   N)r   r   r   r   r   r   r   r   r   r   r   ,   s   r   c               @   s   e Zd ZdZdS )StrEnumzaccepts only string valuesN)r   r   r   __doc__r   r   r   r   r    5   s   r    c               @   s   e Zd ZdZdZdS )NamezGuido van RossumzBarry WarsawN)r   r   r   BDFLZFLUFLr   r   r   r   r"   7   s   r"   Questionzwho what when where why)moduleAnswerzhim this then there becauseTheoryzrule law suppositionspanish_inquisition)qualnamec               @   s   e Zd ZdZdZdZdS )Fruitr   r   r   N)r   r   r   ZTOMATOZBANANAZCHERRYr   r   r   r   r*   N   s   r*   c             C   s<   |d kr|}x*t td D ]}| tt||d| qW d S )Nr   )protocol)ranger   r   r   )	assertionsourcetargetr+   r   r   r   test_pickle_dump_loadU   s    r0   c          
   C   s:   x4t td D ]$}| | t||d W d Q R X qW d S )Nr   )r+   )r,   r   r   )r-   	exceptionobjr+   r   r   r   test_pickle_exception[   s    
r3   c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestHelpersc             C   sR   G dd d}x>dD ]6}| }|  t| t||d | t| qW d S )Nc               @   s   e Zd ZdS )z+TestHelpers.test_is_descriptor.<locals>.fooN)r   r   r   r   r   r   r   food   s   r5   )__get____set__
__delete__r   )assertFalseenum_is_descriptorsetattr
assertTrue)selfr5   attrr2   r   r   r   test_is_descriptorc   s    
zTestHelpers.test_is_descriptorc             C   s@   xdD ]}|  t| qW xdD ]}| t| q$W d S )N)_a_Z_aa_)aa__a__aa____a___a____a________________)r=   r:   
_is_sunderr9   )r>   sr   r   r   test_is_sunderl   s    

zTestHelpers.test_is_sunderc             C   s@   xdD ]}|  t| qW xdD ]}| t| q$W d S )N)rG   Z__aa__)rB   rC   rD   rE   rF   rA   rH   rI   rJ   rK   rL   rM   rN   )r=   r:   
_is_dunderr9   )r>   rP   r   r   r   test_is_dundert   s    

zTestHelpers.test_is_dunderN)r   r   r   r@   rQ   rS   r   r   r   r   r4   `   s   	r4   c               @   s   e Zd ZdddZdd ZdS )classpropertyNc             C   s2   || _ || _|| _|d kr(|d k	r(|j}|| _d S )N)fgetfsetfdelr!   )r>   rU   rV   rW   docr   r   r   __init__   s    zclassproperty.__init__c             C   s
   |  |S )N)rU   )r>   instance
ownerclassr   r   r   r6      s    zclassproperty.__get__)NNNN)r   r   r   rY   r6   r   r   r   r   rT   }   s   
rT   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؄ Znddڄ Zodd܄ ZpdS )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 }|| _
d S )Nc               @   s   e Zd ZdZdZdZdZdS )zTestEnum.setUp.<locals>.Seasonr   r   r      N)r   r   r   SPRINGSUMMERAUTUMNWINTERr   r   r   r   Season   s   rb   c               @   s   e Zd ZdZdZde ZdS )z!TestEnum.setUp.<locals>.KonstantsgB
@gJM!	@r   N)r   r   r   EPITAUr   r   r   r   	Konstants   s   rf   c               @   s    e Zd ZdZdZdZdZdZdS )zTestEnum.setUp.<locals>.Grades   r]   r   r   r   N)r   r   r   ABCDFr   r   r   r   Grades   s
   rm   c               @   s   e Zd ZdZdZdZdZdS )z#TestEnum.setUp.<locals>.DirectionalZeastZwestZnorthZsouthN)r   r   r   ZEASTWESTZNORTHZSOUTHr   r   r   r   Directional   s   ro   r   )datec               @   s   e Zd ZdZdZdS )zTestEnum.setUp.<locals>.Holiday)i  r   r   )i  r      N)r   r   r   ZNEW_YEARIDES_OF_MARCHr   r   r   r   Holiday   s   rs   )r   rb   floatrf   r   rm   strro   datetimerp   rs   )r>   rb   rf   rm   ro   rp   rs   r   r   r   setUp   s    zTestEnum.setUpc             C   s2   | j }| tt|tddddddddg d S )	N	__class__r!   __members__r   r^   r_   r`   ra   )rb   assertEqualsetdir)r>   rb   r   r   r   test_dir_on_class   s
    

zTestEnum.test_dir_on_classc          	   C   s.   | j }| tt|jtdddddg d S )Nrx   r!   r   namevalue)rb   rz   r{   r|   ra   )r>   rb   r   r   r   test_dir_on_item   s    zTestEnum.test_dir_on_itemc          
   C   s^   G dd dt }| tt|tddddddg | tt|jtdddd	d
dg d S )Nc               @   s   e Zd ZdZdZdd ZdS )z3TestEnum.test_dir_with_added_behavior.<locals>.Testthatthosec             S   s
   d| j  S )NzWowser! I'm %s!)r~   )r>   r   r   r   wowser   s    z:TestEnum.test_dir_with_added_behavior.<locals>.Test.wowserN)r   r   r   thistheser   r   r   r   r   Test   s   r   rx   r!   ry   r   r   r   r~   r   r   )r   rz   r{   r|   r   )r>   r   r   r   r   test_dir_with_added_behavior   s    
z%TestEnum.test_dir_with_added_behaviorc          
   C   sJ   G dd dt }G dd d|}| tt|jtddddd	d
g d S )Nc               @   s   e Zd Zdd ZdS )zBTestEnum.test_dir_on_sub_with_behavior_on_super.<locals>.SuperEnumc             S   s   dS )Nzdid you see me?r   )r>   r   r   r   	invisible   s    zLTestEnum.test_dir_on_sub_with_behavior_on_super.<locals>.SuperEnum.invisibleN)r   r   r   r   r   r   r   r   	SuperEnum   s   r   c               @   s   e Zd ZdZdS )z@TestEnum.test_dir_on_sub_with_behavior_on_super.<locals>.SubEnumrg   N)r   r   r   sampler   r   r   r   SubEnum   s   r   rx   r!   r   r~   r   r   )r   rz   r{   r|   r   )r>   r   r   r   r   r   &test_dir_on_sub_with_behavior_on_super   s
    z/TestEnum.test_dir_on_sub_with_behavior_on_superc             C   s   | j }| ||j|j d S )N)rb   assertIsra   )r>   rb   r   r   r   test_enum_in_enum_out   s    zTestEnum.test_enum_in_enum_outc             C   s   | j }| |jjd d S )Nr   )rb   rz   r^   r   )r>   rb   r   r   r   test_enum_value   s    zTestEnum.test_enum_valuec             C   s   |  tjjd d S )Nr   )rz   r   r   r   )r>   r   r   r   test_intenum_value   s    zTestEnum.test_intenum_valuec             C   s  | j }t|}| t|t| | t|d| | |j|j|j|jg| xtd	 dD ]\}}||}| |t
|| | |j| | || | |j| | || | t|| | || | t|d|  | t|d|| q`W d S )Nr]   zSPRING SUMMER AUTUMN WINTERr   zSeason.z<Season.{0}: {1}>)rb   listrz   lenr^   r_   r`   ra   	enumeratesplitgetattrr   assertNotEqualr~   assertInr   typeassertIsInstanceru   reprformat)r>   rb   lstiZseasoner   r   r   	test_enum   s&    zTestEnum.test_enumc          	   C   sf   | j }| |jjd | |jjd | t d|j_W d Q R X | t d|j_W d Q R X d S )Nr^   r   Zinviernor   )rb   rz   r^   r~   r   assertRaisesAttributeError)r>   rb   r   r   r   test_value_name   s    zTestEnum.test_value_namec          	   C   s&   | j }| t d|_W d Q R X d S )Nzreally cold)rb   r   r   ra   )r>   rb   r   r   r   test_changing_member  s    zTestEnum.test_changing_memberc          	   C   s   G dd dt }| t|d |`| t|d | t
 |`W d Q R X | t
 |`W d Q R X | t |j`	W d Q R X d S )Nc               @   s$   e Zd ZdZdZdZdZdd ZdS )z0TestEnum.test_attribute_deletion.<locals>.Seasonr   r   r   r]   c             S   s   d S )Nr   )clsr   r   r   spam  s    z5TestEnum.test_attribute_deletion.<locals>.Season.spamN)r   r   r   r^   r_   r`   ra   r   r   r   r   r   rb     s
   rb   r   )
r   r=   hasattrr   r9   r   r   r^   ZDRYr~   )r>   rb   r   r   r   test_attribute_deletion  s    	z TestEnum.test_attribute_deletionc             C   s"   G dd dt }| t| d S )Nc               @   s   e Zd ZdS )z*TestEnum.test_bool_of_class.<locals>.EmptyN)r   r   r   r   r   r   r   Empty"  s   r   )r   r=   bool)r>   r   r   r   r   test_bool_of_class!  s    zTestEnum.test_bool_of_classc             C   s0   G dd dt }x|D ]}| t| qW d S )Nc               @   s   e Zd ZdZdZdZdS )z+TestEnum.test_bool_of_member.<locals>.Countr   r   r   N)r   r   r   Zzeroonetwor   r   r   r   Count'  s   r   )r   r=   r   )r>   r   memberr   r   r   test_bool_of_member&  s    
zTestEnum.test_bool_of_memberc          	   C   s   |  t G dd dt}W d Q R X |  t G dd dt}W d Q R X |  t G dd dt}W d Q R X |  t G dd dt}W d Q R X |  t G dd dt}W d Q R X d S )Nc               @   s   e Zd ZdZdS )z*TestEnum.test_invalid_names.<locals>.Wrong	   N)r   r   r   mror   r   r   r   Wrong0  s   r   c               @   s   e Zd ZdZdS )z*TestEnum.test_invalid_names.<locals>.Wrong   N)r   r   r   _create_r   r   r   r   r   3  s   c               @   s   e Zd ZdZdS )z*TestEnum.test_invalid_names.<locals>.Wrongr   N)r   r   r   _get_mixins_r   r   r   r   r   6  s   c               @   s   e Zd ZdZdS )z*TestEnum.test_invalid_names.<locals>.Wrongr   N)r   r   r   
_find_new_r   r   r   r   r   9  s   c               @   s   e Zd ZdZdS )z*TestEnum.test_invalid_names.<locals>.Wrongr   N)r   r   r   Z
_any_name_r   r   r   r   r   <  s   )r   
ValueErrorr   )r>   r   r   r   r   test_invalid_names.  s    zTestEnum.test_invalid_namesc             C   s~   G dd dt }| |j | |j G dd dt }| |j | |j G dd dtt }| |j | |j d S )Nc               @   s   e Zd ZdZdZdS )z!TestEnum.test_bool.<locals>.LogicTFN)r   r   r   truefalser   r   r   r   LogicA  s   r   c               @   s   e Zd ZdZdZdd ZdS )z%TestEnum.test_bool.<locals>.RealLogicTFc             S   s
   t | jS )N)r   _value_)r>   r   r   r   __bool__J  s    z.TestEnum.test_bool.<locals>.RealLogic.__bool__N)r   r   r   r   r   r   r   r   r   r   	RealLogicG  s   r   c               @   s   e Zd ZdZdZdS )z$TestEnum.test_bool.<locals>.IntLogicr   r   N)r   r   r   r   r   r   r   r   r   IntLogicO  s   r   )r   r=   r   r   r9   int)r>   r   r   r   r   r   r   	test_bool?  s    zTestEnum.test_boolc          	   C   s   | j }| |j| | t | d| W d Q R X | t | d| W d Q R X |d}| || G dd dt}| |j| d S )Nr   r`   c               @   s   e Zd ZdZdZdS )z)TestEnum.test_contains.<locals>.OtherEnumr   r   N)r   r   r   r   r   r   r   r   r   	OtherEnum`  s    r   )rb   r   r`   assertWarnsDeprecationWarningassertNotInr   r   )r>   rb   valr   r   r   r   test_containsU  s    zTestEnum.test_containsc                s@     t fdd   t fdd   t fdd d S )Nc                  s   d j jkS )Ntest)rb   r`   r   )r>   r   r   <lambda>e      z/TestEnum.test_member_contains.<locals>.<lambda>c                  s   d j jkS )Nr   )rb   r`   r   )r>   r   r   r   f  r   c                  s   d j jkS )Nr`   )rb   r`   r   )r>   r   r   r   g  r   )r   	TypeError)r>   r   )r>   r   test_member_containsd  s    zTestEnum.test_member_containsc          	   C   s   | j }| t |j|jk  W d Q R X | t |jdk W d Q R X | |jd G dd dt}| |j|j | t |j|jk  W d Q R X d S )Nr]   r   c               @   s   e Zd ZdZdZdZdS )z'TestEnum.test_comparisons.<locals>.Partr   r   r   N)r   r   r   r^   CLIPZBARRELr   r   r   r   Partr  s   r   )rb   r   r   r^   ra   r   r   r   )r>   rb   r   r   r   r   test_comparisonsi  s    zTestEnum.test_comparisonsc             C   s   G dd dt }t|}| ||j|j|j|jg | |j|j | |jj	d | |jj	d | |d|j | |d|j | |jj
d | dd |j D dd	g d S )
Nc               @   s$   e Zd ZdZdZd ZZdZdZdS )z-TestEnum.test_enum_duplicates.<locals>.Seasonr   r   r   r]   N)	r   r   r   r^   r_   r`   FALLra   ANOTHER_SPRINGr   r   r   r   rb   |  s
   rb   r   r   r`   c             S   s   g | ]\}}|j |kr|qS r   )r~   ).0kvr   r   r   
<listcomp>  s    z1TestEnum.test_enum_duplicates.<locals>.<listcomp>r   r   )r   r   rz   r^   r_   r`   ra   r   r   r   r~   ry   items)r>   rb   r   r   r   r   test_enum_duplicates{  s    zTestEnum.test_enum_duplicatesc          	   C   sv   |  t G dd dt}W d Q R X |  t G dd dt}W d Q R X |  t G dd dt}W d Q R X d S )Nc               @   s   e Zd ZdZdZdZdZdS )z+TestEnum.test_duplicate_name.<locals>.Colorr   r   r   r]   N)r   r   r   redgreenbluer   r   r   r   Color  s   r   c               @   s    e Zd ZdZdZdZdd ZdS )z+TestEnum.test_duplicate_name.<locals>.Colorr   r   r   c             S   s   dS )Nr   r   )r>   r   r   r   r     s    z/TestEnum.test_duplicate_name.<locals>.Color.redN)r   r   r   r   r   r   r   r   r   r   r     s   c               @   s$   e Zd Zedd ZdZdZdZdS )z+TestEnum.test_duplicate_name.<locals>.Colorc             S   s   dS )NZredderr   )r>   r   r   r   r     s    z/TestEnum.test_duplicate_name.<locals>.Color.redr   r   r   N)r   r   r   propertyr   r   r   r   r   r   r   r     s   )r   r   r   )r>   r   r   r   r   test_duplicate_name  s    zTestEnum.test_duplicate_namec             C   s^   G dd dt }| t||j|jg | t|j| | |jjd | |jjd d S )Nc               @   s   e Zd ZdZdZdS )z/TestEnum.test_enum_with_value_name.<locals>.Huhr   r   N)r   r   r   r~   r   r   r   r   r   Huh  s   r   r~   r   )r   rz   r   r~   r   r   r   )r>   r   r   r   r   test_enum_with_value_name  s    z"TestEnum.test_enum_with_value_namec             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 )Nz{}z{:}z{:20}z{:^20}z{:>20}z{:<20})rb   rz   r   r^   ru   )r>   rb   r   r   r   test_format_enum  s    zTestEnum.test_format_enumc             C   s*   G dd dt t}| d|jd d S )Nc               @   s   e Zd ZdZdZdd ZdS )z3TestEnum.test_format_enum_custom.<locals>.TestFloatg      ?g       @c             S   s   dS )NzTestFloat success!r   )r>   specr   r   r   
__format__  s    z>TestEnum.test_format_enum_custom.<locals>.TestFloat.__format__N)r   r   r   r   r   r   r   r   r   r   	TestFloat  s   r   z{}zTestFloat success!)rt   r   rz   r   r   )r>   r   r   r   r   test_format_enum_custom  s    z TestEnum.test_format_enum_customc             C   s   |  ||||j d S )N)rz   r   r   )r>   r   r   r   r   r   assertFormatIsValue  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 )	Nz{}z{:}z{:20}z{:^20}z{:>20}z{:<20}z{:%Y %m}z{:%Y %m %M:00})rs   r   rr   )r>   rs   r   r   r   test_format_enum_date  s    zTestEnum.test_format_enum_datec             C   s   | j }| d|j | d|j | d|j | d|j | d|j | d|j | d|j | d|j | d	|j d S )
Nz{}z{:}z{:20}z{:^20}z{:>20}z{:<20}z{:n}z{:5.2}z{:f})rf   r   re   )r>   rf   r   r   r   test_format_enum_float  s    zTestEnum.test_format_enum_floatc             C   s   | j }| d|j | d|j | d|j | d|j | d|j | d|j | d|j | d|j | d	|j d S )
Nz{}z{:}z{:20}z{:^20}z{:>20}z{:<20}z{:+}z{:08X}z{:b})rm   r   rj   )r>   rm   r   r   r   test_format_enum_int  s    zTestEnum.test_format_enum_intc             C   s^   | j }| d|j | d|j | d|j | d|j | d|j | d|j d S )Nz{}z{:}z{:20}z{:^20}z{:>20}z{:<20})ro   r   rn   )r>   ro   r   r   r   test_format_enum_str  s    zTestEnum.test_format_enum_strc             C   sH   | j }i }d||j< d||j< d||j< d||j< | ||j d d S )NZ1225Z0315Z0704Z1031)rb   ra   r^   r_   r`   rz   )r>   rb   datesr   r   r   	test_hash  s    



zTestEnum.test_hashc             C   s(   G dd dt t}| |j|jk  d S )Nc               @   s   e Zd ZdZde ZdS )z/TestEnum.test_intenum_from_scratch.<locals>.phyr   r   N)r   r   r   pitaur   r   r   r   phy	  s   r   )r   r   r=   r   r   )r>   r   r   r   r   test_intenum_from_scratch  s    z"TestEnum.test_intenum_from_scratchc             C   s8   G dd dt t}G dd d|}| |j|jk  d S )Nc               @   s   e Zd ZdS )z0TestEnum.test_intenum_inherited.<locals>.IntEnumN)r   r   r   r   r   r   r   r     s   r   c               @   s   e Zd ZdZde ZdS )z,TestEnum.test_intenum_inherited.<locals>.phyr   r   N)r   r   r   r   r   r   r   r   r   r     s   r   )r   r   r=   r   r   )r>   r   r   r   r   r   test_intenum_inherited  s    zTestEnum.test_intenum_inheritedc             C   s(   G dd dt t}| |j|jk  d S )Nc               @   s   e Zd ZdZde ZdS )z1TestEnum.test_floatenum_from_scratch.<locals>.phygJM!	@r   N)r   r   r   r   r   r   r   r   r   r     s   r   )rt   r   r=   r   r   )r>   r   r   r   r   test_floatenum_from_scratch  s    z$TestEnum.test_floatenum_from_scratchc             C   s8   G dd dt t}G dd d|}| |j|jk  d S )Nc               @   s   e Zd ZdS )z4TestEnum.test_floatenum_inherited.<locals>.FloatEnumN)r   r   r   r   r   r   r   	FloatEnum  s   r   c               @   s   e Zd ZdZde ZdS )z.TestEnum.test_floatenum_inherited.<locals>.phygJM!	@r   N)r   r   r   r   r   r   r   r   r   r     s   r   )rt   r   r=   r   r   )r>   r   r   r   r   r   test_floatenum_inherited  s    z!TestEnum.test_floatenum_inheritedc             C   s(   G dd dt t}| |j|jk  d S )Nc               @   s   e Zd ZdZdZdS )z/TestEnum.test_strenum_from_scratch.<locals>.phyPiTauN)r   r   r   r   r   r   r   r   r   r   %  s   r   )ru   r   r=   r   r   )r>   r   r   r   r   test_strenum_from_scratch$  s    z"TestEnum.test_strenum_from_scratchc             C   s8   G dd dt t}G dd d|}| |j|jk  d S )Nc               @   s   e Zd ZdS )z0TestEnum.test_strenum_inherited.<locals>.StrEnumN)r   r   r   r   r   r   r   r    +  s   r    c               @   s   e Zd ZdZdZdS )z,TestEnum.test_strenum_inherited.<locals>.phyr   r   N)r   r   r   r   r   r   r   r   r   r   -  s   r   )ru   r   r=   r   r   )r>   r    r   r   r   r   test_strenum_inherited*  s    zTestEnum.test_strenum_inheritedc             C   s:  G dd dt }| dddg|j d | dd t|jD dd	d
g t|}| t|t| | t|d d}| }xt|d	D ]\}}||}| || | t	|| | |j
| | || | ||d	 | | d|  k odk n   | t|| | |t	 | |t qW d 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>.WeekDayr   r   r   r]   rg         N)
r   r   r   SUNDAYMONDAYTUESDAY	WEDNESDAYTHURSDAYFRIDAYSATURDAYr   r   r   r   WeekDay4  s   r  rB   bcc             S   s   g | ]}|qS r   r   )r   r   r   r   r   r   >  s    z)TestEnum.test_intenum.<locals>.<listcomp>r   r   r   r   z8SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY   )r   rz   r   r,   r   r   r   r   r   r   r~   r   indexr=   r   r   r   r   )r>   r  r   r/   r   weekdayr   r   r   r   test_intenum3  s&    	" zTestEnum.test_intenumc             C   sT   G dd dt }| |j|j | |djd | dd |j D dg d S )Nc               @   s,   e 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   r   r   r]   rg   r   r   N)r   r   r   r   r   r   TEUSDAYr   r   r   r   r   r   r   r   r  R  s   r  r   r   c             S   s   g | ]\}}|j |kr|qS r   )r~   )r   r   r   r   r   r   r   \  s    z4TestEnum.test_intenum_duplicates.<locals>.<listcomp>r  )r   r   r  r   rz   r~   ry   r   )r>   r  r   r   r   test_intenum_duplicatesQ  s
    z TestEnum.test_intenum_duplicatesc          	   C   s<   |  tddtj | t tdd W d Q R X d S )Ns    bigs    )r   r   
from_bytesr   r   r   )r>   r   r   r   test_intenum_from_bytes_  s    z TestEnum.test_intenum_from_bytesc          	   C   sX   t tjj}| t|tj t tjjd }| t t| W d Q R X d S )Ng{Gz?)	rt   hexr   r   r   r   fromhexr   r   )r>   hr   r   r   test_floatenum_fromhexd  s
    zTestEnum.test_floatenum_fromhexc             C   s,   t ttrtt| jtj t| jt d S )N)
isinstancer   	Exceptionr0   r   r   )r>   r   r   r   test_pickle_enumk  s    
zTestEnum.test_pickle_enumc             C   s,   t ttrtt| jtj t| jt d S )N)r  r   r  r0   r   r   )r>   r   r   r   test_pickle_intq  s    
zTestEnum.test_pickle_intc             C   s,   t ttrtt| jtj t| jt d S )N)r  r   r  r0   r   r   )r>   r   r   r   test_pickle_floatw  s    
zTestEnum.test_pickle_floatc             C   s,   t ttrtt| jtj t| jt d S )N)r  r&   r  r0   r   Zhim)r>   r   r   r   test_pickle_enum_function}  s    
z"TestEnum.test_pickle_enum_functionc             C   s,   t ttrtt| jtj t| jt d S )N)r  r$   r  r0   r   who)r>   r   r   r   %test_pickle_enum_function_with_module  s    
z.TestEnum.test_pickle_enum_function_with_modulec             C   s    t ttrt| tjd d S )Nr(   )r  r'   r  rz   r   )r>   r   r   r    test_enum_function_with_qualname  s    
z)TestEnum.test_enum_function_with_qualnamec             C   s<   G dd dt }|| j_d| jj | j_t| j| jj d S )Nc               @   s   e Zd ZdZdZdS )zLTestEnum.test_class_nested_enum_and_pickle_protocol_four.<locals>.NestedEnumcommonZrareN)r   r   r   twigsZshinyr   r   r   r   
NestedEnum  s   r  z%s.NestedEnum)r   rx   r  r   r   r0   r   r  )r>   r  r   r   r   /test_class_nested_enum_and_pickle_protocol_four  s    z8TestEnum.test_class_nested_enum_and_pickle_protocol_fourc             C   sB   G dd dt }tj|_x$ttD ]}| |j|d q"W d S )Nc               @   s   e Zd ZdZdZdS )z6TestEnum.test_pickle_by_name.<locals>.ReplaceGlobalIntr   r   N)r   r   r   ZONETWOr   r   r   r   ReplaceGlobalInt  s   r  r  )r   r:   _reduce_ex_by_name__reduce_ex__r,   r   rz   r  )r>   r  protor   r   r   test_pickle_by_name  s    zTestEnum.test_pickle_by_namec             C   sD   t ddtd}|t d< t| t| jt|j t| jt	| d S )N	BadPicklezdill sweet bread-n-butter)r%   )
r   r   globalsr:   _make_class_unpicklabler3   r   r   Zdillr   )r>   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               @   s   e Zd ZdZdZdZdS )z-TestEnum.test_string_enum.<locals>.SkillLevelz'what is the sound of one hand clapping?z#why did the chicken cross the road?zknock, knock!N)r   r   r   masterZ
journeyman
apprenticer   r   r   r   
SkillLevel  s   r*  zknock, knock!)ru   r   rz   r)  )r>   r*  r   r   r   test_string_enum  s    zTestEnum.test_string_enumc             C   sL   G dd dt }| |d|j | t|d|j | |d |j d S )Nc               @   s   e Zd ZdZdZdZdZdS )z-TestEnum.test_getattr_getitem.<locals>.Periodr   r   r   r]   N)r   r   r   morningnoonZeveningnightr   r   r   r   Period  s   r/  r   r.  r,  )r   r   r-  r   r.  r,  )r>   r/  r   r   r   test_getattr_getitem  s    zTestEnum.test_getattr_getitemc             C   s   | j }| t|d d S )N__eq__)rb   r=   r   )r>   rb   r   r   r   test_getattr_dunder  s    zTestEnum.test_getattr_dunderc             C   s4   G dd dt }| t||j|j|j|jg d S )Nc               @   s   e Zd ZdZdZdZdZdS )z-TestEnum.test_iteration_order.<locals>.Seasonr   r]   r   r   N)r   r   r   r_   ra   r`   r^   r   r   r   r   rb     s   rb   )r   rz   r   r_   ra   r`   r^   )r>   rb   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 )N)rz   r   reversedrb   ra   r`   r_   r^   )r>   r   r   r   test_reversed_iteration_order  s    z&TestEnum.test_reversed_iteration_orderc             C   s   t dd}t|}| t|t| | t|d| | |j|j|jg| xjtd dD ]X\}}||}| t	|j
| | || | |j| | || | t|| q`W d S )NSummerMonthzjune july augustr   r   )r   r   rz   r   junejulyaugustr   r   r   r   r   r~   r   r   r   )r>   r6  r   r   monthr   r   r   r   !test_programmatic_function_string  s    
z*TestEnum.test_programmatic_function_stringc             C   s   t dddd}t|}| t|t| | t|d| | |j|j|jg| xjtd dD ]X\}}||}| t	|j
| | || | |j| | || | t|| qdW d S )Nr6  zjune july august
   )startr   )r   r   rz   r   r7  r8  r9  r   r   r   r   r   r~   r   r   r   )r>   r6  r   r   r:  r   r   r   r   ,test_programmatic_function_string_with_start  s    z5TestEnum.test_programmatic_function_string_with_startc             C   s   t ddddg}t|}| t|t| | t|d| | |j|j|jg| xjtd dD ]X\}}||}| t	|j
| | || | |j| | || | t|| qfW d S )Nr6  r7  r8  r9  r   zjune july augustr   )r   r   rz   r   r7  r8  r9  r   r   r   r   r   r~   r   r   r   )r>   r6  r   r   r:  r   r   r   r   &test_programmatic_function_string_list  s    z/TestEnum.test_programmatic_function_string_listc             C   s   t ddddgdd}t|}| t|t| | t|d| | |j|j|jg| xjtd dD ]X\}}||}| t	|j
| | || | |j| | || | t|| qjW d S )	Nr6  r7  r8  r9     )r=  r   zjune july august)r   r   rz   r   r7  r8  r9  r   r   r   r   r   r~   r   r   r   )r>   r6  r   r   r:  r   r   r   r   1test_programmatic_function_string_list_with_start  s    z:TestEnum.test_programmatic_function_string_list_with_startc             C   s   t dd}t|}| t|t| | t|d| | |j|j|jg| xjtd dD ]X\}}||}| t	|j
| | || | |j| | || | t|| q`W d S )Nr6  ))r7  r   )r8  r   )r9  r   r   zjune july augustr   )r   r   rz   r   r7  r8  r9  r   r   r   r   r   r~   r   r   r   )r>   r6  r   r   r:  r   r   r   r   #test_programmatic_function_iterable  s     z,TestEnum.test_programmatic_function_iterablec             C   s   t dtd}t|}| t|t| | t|d| | |j|j|jg| xjtd	 dD ]X\}}||}| t
|j| | || | |j| | || | t|| qdW d S )Nr6  ))r7  r   )r8  r   )r9  r   r   zjune july augustr   )r   r   r   rz   r   r7  r8  r9  r   r   r   r   r   r~   r   r   r   )r>   r6  r   r   r:  r   r   r   r   $test_programmatic_function_from_dict(  s     
z-TestEnum.test_programmatic_function_from_dictc             C   s   t ddtd}t|}| t|t| | t|d| | |j|j|jg| xXtd	 dD ]F\}}||}| || | |j
| | || | t|| qdW d S )Nr6  zjune july august)r   r   r   )r   r   r   rz   r   r7  r8  r9  r   r   r~   r   r   r   )r>   r6  r   r   r:  r   r   r   r   test_programmatic_function_type<  s    z(TestEnum.test_programmatic_function_typec             C   s   t ddtdd}t|}| t|t| | t|d| | |j|j|jg| xXtd	 dD ]F\}}||}| || | |j
| | || | t|| qfW d S )Nr6  zjune july august   )r   r=  r   )r   r   r   rz   r   r7  r8  r9  r   r   r~   r   r   r   )r>   r6  r   r   r:  r   r   r   r   *test_programmatic_function_type_with_startL  s    z3TestEnum.test_programmatic_function_type_with_startc             C   s   t dd}t|}| t|t| | t|d| | |j|j|jg| xXtd dD ]F\}}||}| || | |j	| | 
|| | t|| q`W d S )Nr6  zjune july augustr   r   )r   r   rz   r   r7  r8  r9  r   r   r~   r   r   r   )r>   r6  r   r   r:  r   r   r   r   -test_programmatic_function_type_from_subclass\  s    
z6TestEnum.test_programmatic_function_type_from_subclassc             C   s   t dddd}t|}| t|t| | t|d| | |j|j|jg| xXtd dD ]F\}}||}| || | |j	| | 
|| | t|| qdW d S )Nr6  zjune july august(   )r=  r   )r   r   rz   r   r7  r8  r9  r   r   r~   r   r   r   )r>   r6  r   r   r:  r   r   r   r   8test_programmatic_function_type_from_subclass_with_startl  s    zATestEnum.test_programmatic_function_type_from_subclass_with_startc             C   sT   t ttrt| tjd | tjtd | tjttd t| jtj d S )NzGuido van Rossumr#   )	r  r"   r  rz   r#   r=   r   r   r0   )r>   r   r   r   test_subclassing|  s    
zTestEnum.test_subclassingc          	   C   s:   G dd dt }| t G dd d|}W d Q R X d S )Nc               @   s   e Zd ZdZdZdZdS )z&TestEnum.test_extending.<locals>.Colorr   r   r   N)r   r   r   r   r   r   r   r   r   r   r     s   r   c               @   s   e Zd ZdZdZdZdS )z*TestEnum.test_extending.<locals>.MoreColorr]   rg   r   N)r   r   r   cyanmagentayellowr   r   r   r   	MoreColor  s   rN  )r   r   r   )r>   r   rN  r   r   r   test_extending  s    zTestEnum.test_extendingc             C   s8   G dd dt }| t|j| | |j d d S )Nc               @   s   e Zd ZdZdZdd ZdS )z/TestEnum.test_exclude_methods.<locals>.whateverr   r   c             S   s
   d| j  S )Nz
no, not %s)r   )r>   r   r   r   really  s    z6TestEnum.test_exclude_methods.<locals>.whatever.reallyN)r   r   r   r   r   rP  r   r   r   r   whatever  s   rQ  zno, not that)r   assertIsNotr   rP  rz   r   )r>   rQ  r   r   r   test_exclude_methods  s    zTestEnum.test_exclude_methodsc          	   C   s,   |  t G dd dtt}W d Q R X d S )Nc               @   s   e Zd ZdZdS )z4TestEnum.test_wrong_inheritance_order.<locals>.Wrongzerror before this pointN)r   r   r   ZNotHerer   r   r   r   r     s   r   )r   r   r   ru   )r>   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               @   s   e Zd ZdZdZdZdS )z2TestEnum.test_intenum_transitivity.<locals>.numberr   r   r   N)r   r   r   r   r   threer   r   r   r   number  s   rV  c               @   s   e Zd ZdZdZdZdS )z2TestEnum.test_intenum_transitivity.<locals>.numeror   r   r   N)r   r   r   unodostresr   r   r   r   numero  s   rZ  )r   rz   r   rW  r   rX  rU  rY  )r>   rV  rZ  r   r   r   test_intenum_transitivity  s
    z"TestEnum.test_intenum_transitivityc             C   s4   G dd dt }G dd dt }| t||j d S )Nc               @   s   e Zd ZdZdZdS )z4TestEnum.test_wrong_enum_in_call.<locals>.Monochromer   r   N)r   r   r   blackwhiter   r   r   r   
Monochrome  s   r^  c               @   s   e Zd ZdZdZdS )z0TestEnum.test_wrong_enum_in_call.<locals>.Genderr   r   N)r   r   r   malefemaler   r   r   r   Gender  s   ra  )r   r   r   r_  )r>   r^  ra  r   r   r   test_wrong_enum_in_call  s    z TestEnum.test_wrong_enum_in_callc             C   s4   G dd dt }G dd dt}| t||j d S )Nc               @   s   e Zd ZdZdZdS )z:TestEnum.test_wrong_enum_in_mixed_call.<locals>.Monochromer   r   N)r   r   r   r\  r]  r   r   r   r   r^    s   r^  c               @   s   e Zd ZdZdZdS )z6TestEnum.test_wrong_enum_in_mixed_call.<locals>.Genderr   r   N)r   r   r   r_  r`  r   r   r   r   ra    s   ra  )r   r   r   r   r_  )r>   r^  ra  r   r   r   test_wrong_enum_in_mixed_call  s    z&TestEnum.test_wrong_enum_in_mixed_callc             C   s8   G dd dt }G dd dt }| ||j|j d S )Nc               @   s   e Zd ZdZdZdS )z6TestEnum.test_mixed_enum_in_call_1.<locals>.Monochromer   r   N)r   r   r   r\  r]  r   r   r   r   r^    s   r^  c               @   s   e Zd ZdZdZdS )z2TestEnum.test_mixed_enum_in_call_1.<locals>.Genderr   r   N)r   r   r   r_  r`  r   r   r   r   ra    s   ra  )r   r   r`  r]  )r>   r^  ra  r   r   r   test_mixed_enum_in_call_1  s    z"TestEnum.test_mixed_enum_in_call_1c             C   s8   G dd dt }G dd dt}| ||j|j d S )Nc               @   s   e Zd ZdZdZdS )z6TestEnum.test_mixed_enum_in_call_2.<locals>.Monochromer   r   N)r   r   r   r\  r]  r   r   r   r   r^    s   r^  c               @   s   e Zd ZdZdZdS )z2TestEnum.test_mixed_enum_in_call_2.<locals>.Genderr   r   N)r   r   r   r_  r`  r   r   r   r   ra    s   ra  )r   r   r   r_  r\  )r>   r^  ra  r   r   r   test_mixed_enum_in_call_2  s    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               @   s   e Zd Zdd ZdS )z*TestEnum.test_flufl_enum.<locals>.Fluflnumc             S   s
   t | jS )N)r   r   )r>   r   r   r   __int__  s    z2TestEnum.test_flufl_enum.<locals>.Fluflnum.__int__N)r   r   r   rf  r   r   r   r   Fluflnum  s   rg  c               @   s   e Zd ZdZdZdZdS )z0TestEnum.test_flufl_enum.<locals>.MailManOptionsr   r   r   N)r   r   r   option1option2Zoption3r   r   r   r   MailManOptions  s   rj  r   )r   rz   r   rh  )r>   rg  rj  r   r   r   test_flufl_enum  s    zTestEnum.test_flufl_enumc             C   s   G dd dt }| |jjt | |jt G dd dtt}| |jjt | |jt G dd dt}| |jjt	 | |jt	 d S )Nc               @   s   e Zd ZdZdZdS )z+TestEnum.test_introspection.<locals>.Numberd      N)r   r   r   r   r   r   r   r   r   Number  s   rn  c               @   s   e Zd ZdZdZdZdS )z+TestEnum.test_introspection.<locals>.StringsoftZroughhardN)r   r   r   yarnZropeZwirer   r   r   r   String  s   rr  c               @   s   e Zd ZdZdZdS )z*TestEnum.test_introspection.<locals>.Plainr]  r   N)r   r   r   vanillar   r   r   r   r   Plain  s   rt  )
r   r   r   _member_type_r   ru   r   rq  rs  object)r>   rn  rr  rt  r   r   r   test_introspection  s    zTestEnum.test_introspectionc          	   C   sP   G dd dt }| t |d W d Q R X | t |d  W d Q R X d S )Nc               @   s   e Zd ZdZdZdZdS )z0TestEnum.test_no_such_enum_member.<locals>.Colorr   r   r   N)r   r   r   r   r   r   r   r   r   r   r     s   r   r]   Z
chartreuse)r   r   r   KeyError)r>   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>.Colorr   r   r   c             S   s
   d| j  S )Nz!don't you just love shades of %s?)r~   )r>   r   r   r   __repr__  s    z.TestEnum.test_new_repr.<locals>.Color.__repr__N)r   r   r   r   r   r   rz  r   r   r   r   r     s   r   z#don't you just love shades of blue?)r   rz   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               @   s   e Zd Zdd ZdS )z,TestEnum.test_inherited_repr.<locals>.MyEnumc             S   s
   d| j  S )NzMy name is %s.)r~   )r>   r   r   r   rz    s    z5TestEnum.test_inherited_repr.<locals>.MyEnum.__repr__N)r   r   r   rz  r   r   r   r   MyEnum  s   r|  c               @   s   e Zd ZdZdZdZdS )z/TestEnum.test_inherited_repr.<locals>.MyIntEnumr   r   r   N)r   r   r   r   r   Ztheotherr   r   r   r   	MyIntEnum  s   r}  zMy name is that.)r   r   rz   r   r   )r>   r|  r}  r   r   r   test_inherited_repr   s    zTestEnum.test_inherited_reprc                sd   G  fdddt t G dd dt d}G dd dt d}G dd	 d	|}G d
d d|}d S )Nc                   s   e Zd Z fddZ  ZS )z3TestEnum.test_multiple_mixin_mro.<locals>.auto_enumc       	         s   t | }t|j}d}x8|jD ].}|| }|tkr:|}n|}|d7 }|||< q W x$| D ]\}}||kr\|||< q\W t| | |||S )Nr   r   )r   r{   _member_namesEllipsisr   super__new__)	metaclsr   bases	classdicttempnamesr   r   r   )rx   	auto_enumr   r   r    s    


z;TestEnum.test_multiple_mixin_mro.<locals>.auto_enum.__new__)r   r   r   r  __classcell__r   )r  )rx   r   r    s   r  c               @   s   e Zd ZdS )z:TestEnum.test_multiple_mixin_mro.<locals>.AutoNumberedEnumN)r   r   r   r   r   r   r   AutoNumberedEnum  s   r  )	metaclassc               @   s   e Zd ZdS )z5TestEnum.test_multiple_mixin_mro.<locals>.AutoIntEnumN)r   r   r   r   r   r   r   AutoIntEnum!  s   r  c               @   s   e Zd ZdZdZdZdS )z8TestEnum.test_multiple_mixin_mro.<locals>.TestAutoNumber.r   N)r   r   r   rB   r  r  r   r   r   r   TestAutoNumber$  s   r  c               @   s   e Zd ZdZdZdZdS )z5TestEnum.test_multiple_mixin_mro.<locals>.TestAutoInt.r   N)r   r   r   rB   r  r  r   r   r   r   TestAutoInt)  s   r  )r   r   r   )r>   r  r  r  r  r   )r  r   test_multiple_mixin_mro
  s
    z TestEnum.test_multiple_mixin_mroc                s   G  fdddt  G dd d t}| |jtj | t|j|j d  t d< |t d<  dd}| |d t	| j|d | |jj
d t	| j|j t	| j| d S )	Nc                   sH   e Zd ZdZdd Zdd Zedd Z dd	 Zd
d Z fddZdS )z:TestEnum.test_subclasses_with_getnewargs.<locals>.NamedIntNamedIntc             W   s@   |}|^}}t |dkr tdtj| f| }||_||_|S )Nr   z name and value must be specified)r   r   r   r  _intname_args)r   argsr  r~   r>   r   r   r   r  1  s    zBTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__new__c             S   s   | j S )N)r  )r>   r   r   r   __getnewargs__:  s    zITestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__getnewargs__c             S   s   | j S )N)r  )r>   r   r   r   r   <  s    zCTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__name__c             S   s   d t| j| jt| S )Nz{}({!r}, {}))r   r   r   r   rz  )r>   r   r   r   rz  ?  s    zCTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__repr__c             S   s&   t }|j}|jtkr|| S || S )N)r   __str____objclass__rv  rz  )r>   basebase_strr   r   r   r  D  s
    

zBTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__str__c                sB   t | t | }t|  r:t| r: d| j|j|S |S d S )Nz({0} + {1}))r   r  r   r   )r>   otherr  )r  r   r   __add__M  s    zBTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__add__N)	r   r   r   r  r  r   rz  r  r  r   )r  r   r   r  /  s   		r  c               @   s   e Zd ZdZdZdZdS )z5TestEnum.test_subclasses_with_getnewargs.<locals>.NEINEI)zthe-xr   )zthe-yr   N)r   r   r   xyr   r   r   r   r  V  s   r  zNamedInt('(the-x + the-y)', 3)r   rg   r   )r   r   r   r  rz   r   r  r  r%  r0   r   )r>   r  NI5r   )r  r   test_subclasses_with_getnewargs.  s    '


z(TestEnum.test_subclasses_with_getnewargsc                s   G  fdddt  G dd d t}| |jtj | t|j|j d  t d< |t d<  dd}| |d t	| j|d | |jj
d t	| j|j t	| j| d S )	Nc                   sH   e Zd ZdZdd Zdd Zedd Z dd	 Zd
d Z fddZdS )z=TestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedIntr  c             W   s@   |}|^}}t |dkr tdtj| f| }||_||_|S )Nr   z name and value must be specified)r   r   r   r  r  r  )r   r  r  r~   r>   r   r   r   r  j  s    zETestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__new__c             S   s
   | j i fS )N)r  )r>   r   r   r   __getnewargs_ex__s  s    zOTestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__getnewargs_ex__c             S   s   | j S )N)r  )r>   r   r   r   r   u  s    zFTestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__name__c             S   s   d t| j| jt| S )Nz{}({!r}, {}))r   r   r   r   rz  )r>   r   r   r   rz  x  s    zFTestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__repr__c             S   s&   t }|j}|jtkr|| S || S )N)r   r  r  rv  rz  )r>   r  r  r   r   r   r  }  s
    

zETestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__str__c                sB   t | t | }t|  r:t| r: d| j|j|S |S d S )Nz({0} + {1}))r   r  r   r   )r>   r  r  )r  r   r   r    s    zETestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__add__N)	r   r   r   r  r  r   rz  r  r  r   )r  r   r   r  h  s   		r  c               @   s   e Zd ZdZdZdZdS )z8TestEnum.test_subclasses_with_getnewargs_ex.<locals>.NEIr  )zthe-xr   )zthe-yr   N)r   r   r   r  r  r   r   r   r   r    s   r  zNamedInt('(the-x + the-y)', 3)r   rg   r   )r   r   r   r  rz   r   r  r  r%  r0   r   )r>   r  r  r   )r  r   "test_subclasses_with_getnewargs_exg  s    '


z+TestEnum.test_subclasses_with_getnewargs_exc                s   G  fdddt  G dd d t}| |jtj | t|j|j d  t d< |t d<  dd}| |d t	| j|d | |jj
d t	| j|j t	| j| d S )	Nc                   sH   e Zd ZdZdd Zdd Zedd Z dd	 Zd
d Z fddZdS )z6TestEnum.test_subclasses_with_reduce.<locals>.NamedIntr  c             W   s@   |}|^}}t |dkr tdtj| f| }||_||_|S )Nr   z name and value must be specified)r   r   r   r  r  r  )r   r  r  r~   r>   r   r   r   r    s    z>TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__new__c             S   s   | j | jfS )N)rx   r  )r>   r   r   r   
__reduce__  s    zATestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__reduce__c             S   s   | j S )N)r  )r>   r   r   r   r     s    z?TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__name__c             S   s   d t| j| jt| S )Nz{}({!r}, {}))r   r   r   r   rz  )r>   r   r   r   rz    s    z?TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__repr__c             S   s&   t }|j}|jtkr|| S || S )N)r   r  r  rv  rz  )r>   r  r  r   r   r   r    s
    

z>TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__str__c                sB   t | t | }t|  r:t| r: d| j|j|S |S d S )Nz({0} + {1}))r   r  r   r   )r>   r  r  )r  r   r   r    s    z>TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__add__N)	r   r   r   r  r  r   rz  r  r  r   )r  r   r   r    s   		r  c               @   s   e Zd ZdZdZdZdS )z1TestEnum.test_subclasses_with_reduce.<locals>.NEIr  )zthe-xr   )zthe-yr   N)r   r   r   r  r  r   r   r   r   r    s   r  zNamedInt('(the-x + the-y)', 3)r   rg   r   )r   r   r   r  rz   r   r  r  r%  r0   r   )r>   r  r  r   )r  r   test_subclasses_with_reduce  s    '


z$TestEnum.test_subclasses_with_reducec                s   G  fdddt  G dd d t}| |jtj | t|j|j d  t d< |t d<  dd}| |d t	| j|d | |jj
d t	| j|j t	| j| d S )	Nc                   sH   e Zd ZdZdd Zdd Zedd Z dd	 Zd
d Z fddZdS )z9TestEnum.test_subclasses_with_reduce_ex.<locals>.NamedIntr  c             W   s@   |}|^}}t |dkr tdtj| f| }||_||_|S )Nr   z name and value must be specified)r   r   r   r  r  r  )r   r  r  r~   r>   r   r   r   r    s    zATestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__new__c             S   s   | j | jfS )N)rx   r  )r>   r"  r   r   r   r!    s    zGTestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__reduce_ex__c             S   s   | j S )N)r  )r>   r   r   r   r     s    zBTestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__name__c             S   s   d t| j| jt| S )Nz{}({!r}, {}))r   r   r   r   rz  )r>   r   r   r   rz    s    zBTestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__repr__c             S   s&   t }|j}|jtkr|| S || S )N)r   r  r  rv  rz  )r>   r  r  r   r   r   r    s
    

zATestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__str__c                sB   t | t | }t|  r:t| r: d| j|j|S |S d S )Nz({0} + {1}))r   r  r   r   )r>   r  r  )r  r   r   r    s    zATestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__add__N)	r   r   r   r  r!  r   rz  r  r  r   )r  r   r   r    s   		r  c               @   s   e Zd ZdZdZdZdS )z4TestEnum.test_subclasses_with_reduce_ex.<locals>.NEIr  )zthe-xr   )zthe-yr   N)r   r   r   r  r  r   r   r   r   r    s   r  zNamedInt('(the-x + the-y)', 3)r   rg   r   )r   r   r   r  rz   r   r  r  r%  r0   r   )r>   r  r  r   )r  r   test_subclasses_with_reduce_ex  s    '


z'TestEnum.test_subclasses_with_reduce_exc                s   G  fdddt  G dd d t}| |jtj | t|j|j d  t d< |t d<  dd}| |d | |jj	d t
| jt|j t
| jt| d S )	Nc                   s@   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   s@   |}|^}}t |dkr tdtj| f| }||_||_|S )Nr   z name and value must be specified)r   r   r   r  r  r  )r   r  r  r~   r>   r   r   r   r    s    zPTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__new__c             S   s   | j S )N)r  )r>   r   r   r   r     s    zQTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__name__c             S   s   d t| j| jt| S )Nz{}({!r}, {}))r   r   r   r   rz  )r>   r   r   r   rz  !  s    zQTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__repr__c             S   s&   t }|j}|jtkr|| S || S )N)r   r  r  rv  rz  )r>   r  r  r   r   r   r  &  s
    

zPTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__str__c                sB   t | t | }t|  r:t| r: d| j|j|S |S d S )Nz({0} + {1}))r   r  r   r   )r>   r  r  )r  r   r   r  /  s    zPTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__add__N)r   r   r   r  r   rz  r  r  r   )r  r   r   r    s   		r  c               @   s   e Zd ZdZdZdZdS )zCTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NEIr  )zthe-xr   )zthe-yr   N)r   r   r   r  r  r   r   r   r   r  8  s   r  zNamedInt('(the-x + the-y)', 3)r   rg   r   )r   r   r   r  rz   r   r  r  r%  r   r3   r   r   r   )r>   r  r  r   )r  r   -test_subclasses_without_direct_pickle_support  s    %


z6TestEnum.test_subclasses_without_direct_pickle_supportc                s   G  fdddt  G dd d t}| |jtj | t|j|j d  t d< |t d<  dd}| |d | |jj	d t
| j|j t
| j| d S )	Nc                   s@   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 )zSTestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedIntr  c             W   s@   |}|^}}t |dkr tdtj| f| }||_||_|S )Nr   z name and value must be specified)r   r   r   r  r  r  )r   r  r  r~   r>   r   r   r   r  J  s    z[TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__new__c             S   s   | j S )N)r  )r>   r   r   r   r   S  s    z\TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__name__c             S   s   d t| j| jt| S )Nz{}({!r}, {}))r   r   r   r   rz  )r>   r   r   r   rz  V  s    z\TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__repr__c             S   s&   t }|j}|jtkr|| S || S )N)r   r  r  rv  rz  )r>   r  r  r   r   r   r  [  s
    

z[TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__str__c                sB   t | t | }t|  r:t| r: d| j|j|S |S d S )Nz({0} + {1}))r   r  r   r   )r>   r  r  )r  r   r   r  d  s    z[TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__add__N)r   r   r   r  r   rz  r  r  r   )r  r   r   r  H  s   		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>.NEIr  )zthe-xr   )zthe-yr   c             S   s   t | j| jffS )N)r   rx   _name_)r>   r"  r   r   r   r!  q  s    z\TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NEI.__reduce_ex__N)r   r   r   r  r  r!  r   r   r   r   r  m  s   r  zNamedInt('(the-x + the-y)', 3)r   rg   r   )r   r   r   r  rz   r   r  r  r%  r   r0   )r>   r  r  r   )r  r   8test_subclasses_without_direct_pickle_support_using_nameG  s    %


zATestEnum.test_subclasses_without_direct_pickle_support_using_namec             C   s\   G dd dt t}| t|j| | |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)r   zfor the money)r   zfor the show)r   zfor the musicN)r   r   r   firstsecondthirdr   r   r   r   r    s   r  )r   zfor the music)tupler   r   r   r  r   r  rz   r  r%  r0   )r>   r  r   r   r   test_tuple_subclass~  s    
zTestEnum.test_tuple_subclassc             C   sd   G dd dt }| t||j|j|jg | t|jd | |jjd | |d|j d S )Nc               @   s(   e Zd ZdZdZdZdd Zdd ZdS )zITestEnum.test_duplicate_values_give_unique_enum_items.<locals>.AutoNumberr   c             S   s"   t | jd }t| }||_|S )Nr   )r   ry   rv  r  r   )r   r   r2   r   r   r   r    s    
zQTestEnum.test_duplicate_values_give_unique_enum_items.<locals>.AutoNumber.__new__c             S   s
   t | jS )N)r   r   )r>   r   r   r   rf    s    zQTestEnum.test_duplicate_values_give_unique_enum_items.<locals>.AutoNumber.__int__N)r   r   r   r  r  r  r  rf  r   r   r   r   
AutoNumber  s
   r  r   r   r   )	r   rz   r   r  r  r  r   r   r   )r>   r  r   r   r   ,test_duplicate_values_give_unique_enum_items  s    z5TestEnum.test_duplicate_values_give_unique_enum_itemsc             C   s\   G dd dt }G dd d|}| t||j|j|jg | ttt|dddg d S )Nc               @   s   e Zd Zdd Zdd ZdS )zBTestEnum.test_inherited_new_from_enhanced_enum.<locals>.AutoNumberc             S   s"   t | jd }t| }||_|S )Nr   )r   ry   rv  r  r   )r   r   r2   r   r   r   r    s    
zJTestEnum.test_inherited_new_from_enhanced_enum.<locals>.AutoNumber.__new__c             S   s
   t | jS )N)r   r   )r>   r   r   r   rf    s    zJTestEnum.test_inherited_new_from_enhanced_enum.<locals>.AutoNumber.__int__N)r   r   r   r  rf  r   r   r   r   r    s   r  c               @   s   e Zd ZdZdZdZdS )z=TestEnum.test_inherited_new_from_enhanced_enum.<locals>.Colorr   N)r   r   r   r   r   r   r   r   r   r   r     s   r   r   r   r   )r   rz   r   r   r   r   mapr   )r>   r  r   r   r   r   %test_inherited_new_from_enhanced_enum  s    z.TestEnum.test_inherited_new_from_enhanced_enumc             C   s\   G dd dt }G dd d|}| t||j|j|jg | ttt|dddg d S )Nc               @   s   e Zd Zdd ZdS )z?TestEnum.test_inherited_new_from_mixed_enum.<locals>.AutoNumberc             S   s$   t | jd }t| |}||_|S )Nr   )r   ry   r   r  r   )r   r   r2   r   r   r   r    s    zGTestEnum.test_inherited_new_from_mixed_enum.<locals>.AutoNumber.__new__N)r   r   r   r  r   r   r   r   r    s   r  c               @   s   e Zd ZdZdZdZdS )z:TestEnum.test_inherited_new_from_mixed_enum.<locals>.Colorr   N)r   r   r   r   r   r   r   r   r   r   r     s   r   r   r   r   )r   rz   r   r   r   r   r  r   )r>   r  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               @   s   e Zd Zdd ZdS )z+TestEnum.test_equality.<locals>.AlwaysEqualc             S   s   dS )NTr   )r>   r  r   r   r   r1    s    z2TestEnum.test_equality.<locals>.AlwaysEqual.__eq__N)r   r   r   r1  r   r   r   r   AlwaysEqual  s   r  c               @   s   e Zd ZdZdS )z,TestEnum.test_equality.<locals>.OrdinaryEnumr   N)r   r   r   rB   r   r   r   r   OrdinaryEnum  s   r  )r   rz   rB   )r>   r  r  r   r   r   test_equality  s    zTestEnum.test_equalityc             C   s   G dd dt }G dd d|}| |j|j | |j|j | |j|j | 	|j|j | 
|j|j | |j|j d S )Nc               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z0TestEnum.test_ordered_mixin.<locals>.OrderedEnumc             S   s   | j |j kr| j|jkS tS )N)rx   r   NotImplemented)r>   r  r   r   r   __ge__  s    z7TestEnum.test_ordered_mixin.<locals>.OrderedEnum.__ge__c             S   s   | j |j kr| j|jkS tS )N)rx   r   r  )r>   r  r   r   r   __gt__  s    z7TestEnum.test_ordered_mixin.<locals>.OrderedEnum.__gt__c             S   s   | j |j kr| j|jkS tS )N)rx   r   r  )r>   r  r   r   r   __le__  s    z7TestEnum.test_ordered_mixin.<locals>.OrderedEnum.__le__c             S   s   | j |j kr| j|jk S tS )N)rx   r   r  )r>   r  r   r   r   __lt__  s    z7TestEnum.test_ordered_mixin.<locals>.OrderedEnum.__lt__N)r   r   r   r  r  r  r  r   r   r   r   OrderedEnum  s   r  c               @   s    e Zd ZdZdZdZdZdZdS )z*TestEnum.test_ordered_mixin.<locals>.Graderg   r]   r   r   r   N)r   r   r   rh   ri   rj   rk   rl   r   r   r   r   Grade  s
   r  )r   assertGreaterrh   ri   assertLessEqualrl   rj   
assertLessrk   assertGreaterEqualrz   r   )r>   r  r  r   r   r   test_ordered_mixin  s    zTestEnum.test_ordered_mixinc          	   C   sJ   G dd dt }G dd d|}| t G dd d|}W d Q R X d S )Nc               @   s   e Zd Zdd ZdS )z'TestEnum.test_extending2.<locals>.Shadec             S   s   t | j d S )N)printr~   )r>   r   r   r   shade  s    z-TestEnum.test_extending2.<locals>.Shade.shadeN)r   r   r   r  r   r   r   r   Shade  s   r  c               @   s   e Zd ZdZdZdZdS )z'TestEnum.test_extending2.<locals>.Colorr   r   r   N)r   r   r   r   r   r   r   r   r   r   r     s   r   c               @   s   e Zd ZdZdZdZdS )z+TestEnum.test_extending2.<locals>.MoreColorr]   rg   r   N)r   r   r   rK  rL  rM  r   r   r   r   rN    s   rN  )r   r   r   )r>   r  r   rN  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               @   s   e Zd Zdd ZdS )z'TestEnum.test_extending3.<locals>.Shadec             S   s   | j S )N)r~   )r>   r   r   r   r    s    z-TestEnum.test_extending3.<locals>.Shade.shadeN)r   r   r   r  r   r   r   r   r    s   r  c               @   s   e Zd Zdd ZdS )z'TestEnum.test_extending3.<locals>.Colorc             S   s
   d| j  S )Nz%s hexlified!)r   )r>   r   r   r   r    s    z+TestEnum.test_extending3.<locals>.Color.hexN)r   r   r   r  r   r   r   r   r     s   r   c               @   s   e Zd ZdZdZdZdS )z+TestEnum.test_extending3.<locals>.MoreColorr]   rg   r   N)r   r   r   rK  rL  rM  r   r   r   r   rN    s   rN  z5 hexlified!)r   rz   rL  r  )r>   r  r   rN  r   r   r   test_extending3  s    zTestEnum.test_extending3c             C   s6   G dd dt }G dd d|}| t|j| d S )Nc               @   s   e Zd Zdd ZdS )z3TestEnum.test_subclass_duplicate_name.<locals>.Basec             S   s   d S )Nr   )r>   r   r   r   r     s    z8TestEnum.test_subclass_duplicate_name.<locals>.Base.testN)r   r   r   r   r   r   r   r   Base   s   r  c               @   s   e Zd ZdZdS )z3TestEnum.test_subclass_duplicate_name.<locals>.Testr   N)r   r   r   r   r   r   r   r   r     s   r   )r   r   r   r   )r>   r  r   r   r   r   test_subclass_duplicate_name  s    z%TestEnum.test_subclass_duplicate_namec                sD   ddl m  G  fdddt}G dd d|}| |jjd d S )Nr   )DynamicClassAttributec                   s   e Zd Z dd ZdS )z;TestEnum.test_subclass_duplicate_name_dynamic.<locals>.Basec             S   s   dS )Ndynamicr   )r>   r   r   r   r   
  s    z@TestEnum.test_subclass_duplicate_name_dynamic.<locals>.Base.testN)r   r   r   r   r   )r  r   r   r  	  s   r  c               @   s   e Zd ZdZdS )z;TestEnum.test_subclass_duplicate_name_dynamic.<locals>.Testr   N)r   r   r   r   r   r   r   r   r     s   r   r  )typesr  r   rz   r   )r>   r  r   r   )r  r   $test_subclass_duplicate_name_dynamic  s    z-TestEnum.test_subclass_duplicate_name_dynamicc          	   C   sJ   G dd dt }G dd d|}| t G dd d|}W d Q R X d S )Nc               @   s   e Zd Zdd ZdS )z/TestEnum.test_no_duplicates.<locals>.UniqueEnumc                sB    j }t fdd|D r> j}| jj}td||f d S )Nc             3   s   | ]} j |j kV  qd S )N)r   )r   r   )r>   r   r   	<genexpr>  s    zKTestEnum.test_no_duplicates.<locals>.UniqueEnum.__init__.<locals>.<genexpr>z-aliases not allowed in UniqueEnum:  %r --> %r)rx   anyr~   r   r   )r>   r  r   rB   r   r   )r>   r   rY     s    z8TestEnum.test_no_duplicates.<locals>.UniqueEnum.__init__N)r   r   r   rY   r   r   r   r   
UniqueEnum  s   r  c               @   s   e Zd ZdZdZdZdS )z*TestEnum.test_no_duplicates.<locals>.Colorr   r   r   N)r   r   r   r   r   r   r   r   r   r   r     s   r   c               @   s   e Zd ZdZdZdZdZdS )z*TestEnum.test_no_duplicates.<locals>.Colorr   r   r   N)r   r   r   r   r   r   Zgrener   r   r   r   r   !  s   )r   r   r   )r>   r  r   r   r   r   test_no_duplicates  s    
zTestEnum.test_no_duplicatesc             C   s:   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)gITf|Dg    
BA)gQX4Eg    WA)goEg    TXA)g	Dg    (IA)gcEg   A)g[\h}Eg    ，A)g#'?TQEg   _xA)gJ-UEg    wAc             S   s   || _ || _d S )N)massradius)r>   r  r  r   r   r   rY   1  s    z+TestEnum.test_init.<locals>.Planet.__init__c             S   s   d}|| j  | j| j  S )NgyдW=)r  r  )r>   Gr   r   r   surface_gravity4  s    z2TestEnum.test_init.<locals>.Planet.surface_gravityN)r   r   r   ZMERCURYZVENUSEARTHZMARSZJUPITERZSATURNZURANUSZNEPTUNErY   r   r  r   r   r   r   Planet(  s   r  r   g#@)goEg    TXA)r   rz   roundr  r  r   )r>   r  r   r   r   	test_init'  s    zTestEnum.test_initc             C   s|   G dd dt t}| t|d | t|d | t|d | t|jt  | |j|jk | |j	|j
k d S )Nc               @   s   e Zd ZdZdd ZdZe Zx$edD ]Z	e	d dfede	 < q(W x$ed	D ]Z	e	d
 dfede	 < qNW x edD ]Z	e	dfede	 < qtW e
ZeZeZdS )z$TestEnum.test_ignore.<locals>.Periodz3
            different lengths of time
            c             S   s   t | |}||_||_|S )N)r   r  r   period)r   r   r  r2   r   r   r   r  A  s    z,TestEnum.test_ignore.<locals>.Period.__new__zPeriod i   rE  r:  zmonth_%d5   r   weekzweek_%d    dayzday_%dN)r   r   r   r!   r  _ignore_varsr/  r,   r   day_1ZOneDayZweek_1ZOneWeekmonth_1ZOneMonthr   r   r   r   r/  =  s   r/  r  r   )r   r   r9   r   r=   r  r  r  Zday_30Zweek_4Zday_28)r>   r/  r   r   r   test_ignore<  s    zTestEnum.test_ignorec             C   s   G dd dt }G dd d|}| t||j|j|jg xDt|tdD ]2\}}|d7 }| |j|g | 	||g| qLW d S )Nc               @   s   e Zd Zdd ZdS )z6TestEnum.test_nonhash_value.<locals>.AutoNumberInAListc             S   s$   t | jd g}t| }||_|S )Nr   )r   ry   rv  r  r   )r   r   r2   r   r   r   r  Z  s    
z>TestEnum.test_nonhash_value.<locals>.AutoNumberInAList.__new__N)r   r   r   r  r   r   r   r   AutoNumberInAListY  s   r  c               @   s   e Zd ZdZdZdZdS )z1TestEnum.test_nonhash_value.<locals>.ColorInAListr   N)r   r   r   r   r   r   r   r   r   r   ColorInAList_  s   r  r   r   )
r   rz   r   r   r   r   zipr,   r   r   )r>   r  r  r:   r   r   r   r   test_nonhash_valueX  s    zTestEnum.test_nonhash_valuec             C   s^   G dd dt t}G dd d|}| t||j|jg | |jd | |d|j d S )Nc               @   s   e Zd Zdd ZdS )zHTestEnum.test_conflicting_types_resolved_in_new.<locals>.LabelledIntEnumc             W   s$   |\}}t | |}||_||_|S )N)r   r  labelr   )r   r  r   r  r2   r   r   r   r  k  s
    zPTestEnum.test_conflicting_types_resolved_in_new.<locals>.LabelledIntEnum.__new__N)r   r   r   r  r   r   r   r   LabelledIntEnumj  s   r  c               @   s   e Zd ZdZdZdS )zETestEnum.test_conflicting_types_resolved_in_new.<locals>.LabelledList)r   ZUnprocessed)r   zPayment CompleteN)r   r   r   unprocessedpayment_completer   r   r   r   LabelledListr  s   r  r   )r   r   rz   r   r  r  )r>   r  r  r   r   r   &test_conflicting_types_resolved_in_newi  s
    z/TestEnum.test_conflicting_types_resolved_in_newc             C   s`   G dd dt }| t||j|j|jg | |jjd | |jjd | |jjd d S )Nc               @   s   e Zd Ze Ze Ze ZdS )z(TestEnum.test_auto_number.<locals>.ColorN)r   r   r   r	   r   r   r   r   r   r   r   r   {  s   r   r   r   r   )r   rz   r   r   r   r   r   )r>   r   r   r   r   test_auto_numberz  s
    zTestEnum.test_auto_numberc             C   s`   G dd dt }| t||j|j|jg | |jjd | |jjd | |jjd d S )Nc               @   s&   e Zd Zdd Ze Ze Ze ZdS )z&TestEnum.test_auto_name.<locals>.Colorc             S   s   | S )Nr   )r~   r=  countlastr   r   r   _generate_next_value_  s    z<TestEnum.test_auto_name.<locals>.Color._generate_next_value_N)r   r   r   r  r	   r   r   r   r   r   r   r   r     s   r   r   r   r   )r   rz   r   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               @   s   e Zd Zdd ZdS )z5TestEnum.test_auto_name_inherit.<locals>.AutoNameEnumc             S   s   | S )Nr   )r~   r=  r  r  r   r   r   r    s    zKTestEnum.test_auto_name_inherit.<locals>.AutoNameEnum._generate_next_value_N)r   r   r   r  r   r   r   r   AutoNameEnum  s   r  c               @   s   e Zd Ze Ze Ze ZdS )z.TestEnum.test_auto_name_inherit.<locals>.ColorN)r   r   r   r	   r   r   r   r   r   r   r   r     s   r   r   r   r   )r   rz   r   r   r   r   r   )r>   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               @   s   e Zd ZdZe ZdS )z)TestEnum.test_auto_garbage.<locals>.Colorr   N)r   r   r   r   r	   r   r   r   r   r   r     s   r   r   )r   rz   r   r   )r>   r   r   r   r   test_auto_garbage  s    zTestEnum.test_auto_garbagec             C   s`   G dd dt }| t||j|j|jg | |jjd | |jjd | |jjd d S )Nc               @   s   e Zd ZdZdZe ZdS )z3TestEnum.test_auto_garbage_corrected.<locals>.Colorr   r   N)r   r   r   r   r   r	   r   r   r   r   r   r     s   r   r   r   r   )r   rz   r   r   r   r   r   )r>   r   r   r   r   test_auto_garbage_corrected  s
    z$TestEnum.test_auto_garbage_correctedc             C   s0   G dd dt }| |j|j|jgt| d S )Nc               @   s"   e Zd Ze  ZZe Ze ZdS )z+TestEnum.test_duplicate_auto.<locals>.DupesN)r   r   r   r	   r  primeror  r  r   r   r   r   Dupes  s   
r  )r   rz   r  r  r  r   )r>   r  r   r   r   test_duplicate_auto  s    zTestEnum.test_duplicate_autoc          
   C   s   G dd dt }| |d|j | t|d y|d W n4 tk
rp } z| t|jt W d d }~X Y n
X t	dy|d W n4 t
k
r } z| t|jt W d d }~X Y n
X t	dd S )Nc               @   s$   e Zd ZdZdZdZedd ZdS )z$TestEnum.test_missing.<locals>.Colorr   r   r   c             S   s0   |dkr| j S |dkrdS |dkr(tnd S d S )NrU  z
bad returnrg   z	error out)r   ZeroDivisionError)r   itemr   r   r   	_missing_  s    z.TestEnum.test_missing.<locals>.Color._missing_N)r   r   r   r   r   r   classmethodr  r   r   r   r   r     s   r   rU  r   z
bad returnzException not raised.z	error out)r   r   r   r   r   r   r=   r  __context__r  r  )r>   r   excr   r   r   test_missing  s    $$zTestEnum.test_missingc             C   s  G dd d}G dd d}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 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 | t|jd | |j d G dd d||t }| |jjd | |jjd | |jjd | t|jd | |j d | |j	 d G dd d|||}| |jjd | |jjd | |jjd | t|jd | |j d | |j	 d G dd d|||}	| |	jjd | |	jjd | |	jjd | t|	jd | |	j d | |	j	 d G dd d|t
||}
| |
jjd | |
jjd | |
jjd | t|
jd | |
j d | |	j	 d | t|
t d S )Nc               @   s   e Zd Zedd ZdS )z.TestEnum.test_multiple_mixin.<locals>.MaxMixinc             S   s   t | }|| _|S )N)r   MAX)r   maxr   r   r   r    s    z2TestEnum.test_multiple_mixin.<locals>.MaxMixin.MAXN)r   r   r   rT   r  r   r   r   r   MaxMixin  s   r  c               @   s   e Zd Zdd ZdS )z.TestEnum.test_multiple_mixin.<locals>.StrMixinc             S   s
   | j  S )N)r  lower)r>   r   r   r   r    s    z6TestEnum.test_multiple_mixin.<locals>.StrMixin.__str__N)r   r   r   r  r   r   r   r   StrMixin  s   r  c               @   s   e Zd Zdd ZdS )z.TestEnum.test_multiple_mixin.<locals>.SomeEnumc             S   s   dS )Nbooyahr   )r>   r   r   r   behavior  s    z7TestEnum.test_multiple_mixin.<locals>.SomeEnum.behaviorN)r   r   r   r  r   r   r   r   SomeEnum  s   r  c               @   s   e Zd Zdd Zdd ZdS )z1TestEnum.test_multiple_mixin.<locals>.AnotherEnumc             S   s   dS )Nznuhuh!r   )r>   r   r   r   r    s    z:TestEnum.test_multiple_mixin.<locals>.AnotherEnum.behaviorc             S   s   dS )Nz
what's up?r   )r>   r   r   r   social  s    z8TestEnum.test_multiple_mixin.<locals>.AnotherEnum.socialN)r   r   r   r  r	  r   r   r   r   AnotherEnum  s   r
  c               @   s   e Zd Ze Ze Ze ZdS )z+TestEnum.test_multiple_mixin.<locals>.ColorN)r   r   r   r	   REDGREENBLUEr   r   r   r   r     s   r   r   r   r   z
Color.BLUEc               @   s   e Zd Ze Ze Ze ZdS )z+TestEnum.test_multiple_mixin.<locals>.ColorN)r   r   r   r	   r  r  r  r   r   r   r   r     s   r   c               @   s   e Zd Ze Ze Ze ZdS )z+TestEnum.test_multiple_mixin.<locals>.ColorN)r   r   r   r	   r  r  r  r   r   r   r   r     s   c               @   s   e Zd Ze Ze Ze ZdS )z/TestEnum.test_multiple_mixin.<locals>.CoolColorN)r   r   r   r	   r  r  r  r   r   r   r   	CoolColor  s   r  r  c               @   s   e Zd Ze Ze Ze ZdS )z1TestEnum.test_multiple_mixin.<locals>.CoolerColorN)r   r   r   r	   r  r  r  r   r   r   r   CoolerColor  s   r  znuhuh!z
what's up?c               @   s   e Zd Ze Ze Ze ZdS )z2TestEnum.test_multiple_mixin.<locals>.CoolestColorN)r   r   r   r	   r  r  r  r   r   r   r   CoolestColor  s   r  c               @   s   e Zd Ze Ze Ze ZdS )z3TestEnum.test_multiple_mixin.<locals>.ConfusedColorN)r   r   r   r	   r  r  r  r   r   r   r   ConfusedColor"  s   r  c               @   s   e Zd Ze Ze Ze ZdS )z3TestEnum.test_multiple_mixin.<locals>.ReformedColorN)r   r   r   r	   r  r  r  r   r   r   r   ReformedColor,  s   r  )r   rz   r  r   r  r  r  ru   r  r	  r   r=   
issubclassr   )r>   r  r  r  r
  r   r  r  r  r  r  r   r   r   test_multiple_mixin  sr    zTestEnum.test_multiple_mixinc             C   sN   G dd dt t}tG dd d|}G dd d|}tG dd d|}d S )	Nc               @   s   e Zd Zdd ZdS )z7TestEnum.test_multiple_inherited_mixin.<locals>.StrEnumc             _   s@   x,|D ]$}t |tstd|t|jf qW tj| f||S )Nz%Enumeration '%s' (%s) is not a string)r  ru   r   r   r   r  )r   r  kwargsrB   r   r   r   r  :  s
    

z?TestEnum.test_multiple_inherited_mixin.<locals>.StrEnum.__new__N)r   r   r   r  r   r   r   r   r    9  s   r    c               @   s   e Zd ZdZdZdZdS )z9TestEnum.test_multiple_inherited_mixin.<locals>.Decision1REVERT
REVERT_ALLRETRYN)r   r   r   r  r  r  r   r   r   r   	Decision1@  s   r  c               @   s   e Zd ZdS )z6TestEnum.test_multiple_inherited_mixin.<locals>.MyEnumN)r   r   r   r   r   r   r   r|  E  s   r|  c               @   s   e Zd ZdZdZdZdS )z9TestEnum.test_multiple_inherited_mixin.<locals>.Decision2r  r  r  N)r   r   r   r  r  r  r   r   r   r   	Decision2G  s   r  )ru   r   r   )r>   r    r  r|  r  r   r   r   test_multiple_inherited_mixin8  s    z&TestEnum.test_multiple_inherited_mixinc             C   s(   d}t |dd}i }i }t||| d S )Nz8from enum import Enum; Enum('Animal', 'ANT BEE CAT DOG')z<string>exec)compiler  )r>   code	global_nsZlocal_lsr   r   r   test_empty_globalsM  s
    zTestEnum.test_empty_globalsN)qr   r   r   rw   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r  r  r  r  r  r  r#  r'  r+  r0  r2  r3  r5  r;  r>  r?  rA  rB  rC  rD  rF  rG  rI  rJ  rO  rS  rT  r[  rb  rc  rd  re  rk  rw  ry  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r   r   r   r   r\      s   #				
	
					


$999957	
 `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 )	TestOrderc             C   s   G dd dt }d S )Nc               @   s   e Zd ZdZdZdZdZdS )z*TestOrder.test_same_members.<locals>.Colorzred green bluer   r   r   N)r   r   r   _order_r   r   r   r   r   r   r   r   Z  s   r   )r   )r>   r   r   r   r   test_same_membersY  s    zTestOrder.test_same_membersc             C   s   G dd dt }d S )Nc               @   s    e Zd ZdZdZdZdZeZdS )z7TestOrder.test_same_members_with_aliases.<locals>.Colorzred green bluer   r   r   N)r   r   r   r"  r   r   r   verder   r   r   r   r   a  s
   r   )r   )r>   r   r   r   r   test_same_members_with_aliases`  s    z(TestOrder.test_same_members_with_aliasesc          	   C   s,   |  td G dd dt}W d Q R X d S )Nz#member order does not match _order_c               @   s   e Zd ZdZdZdZdZdS )z6TestOrder.test_same_members_wrong_order.<locals>.Colorzred green bluer   r   r   N)r   r   r   r"  r   r   r   r   r   r   r   r   j  s   r   )assertRaisesRegexr   r   )r>   r   r   r   r   test_same_members_wrong_orderh  s    z'TestOrder.test_same_members_wrong_orderc          	   C   s,   |  td G dd dt}W d Q R X d S )Nz#member order does not match _order_c               @   s   e Zd ZdZdZdZdZdS )z5TestOrder.test_order_has_extra_members.<locals>.Colorzred green blue purpler   r   r   N)r   r   r   r"  r   r   r   r   r   r   r   r   r  s   r   )r&  r   r   )r>   r   r   r   r   test_order_has_extra_membersp  s    z&TestOrder.test_order_has_extra_membersc          	   C   s,   |  td G dd dt}W d Q R X d S )Nz#member order does not match _order_c               @   s    e Zd ZdZdZdZdZeZdS )zBTestOrder.test_order_has_extra_members_with_aliases.<locals>.Colorzred green blue purpler   r   r   N)r   r   r   r"  r   r   r   r$  r   r   r   r   r   z  s
   r   )r&  r   r   )r>   r   r   r   r   )test_order_has_extra_members_with_aliasesx  s    z3TestOrder.test_order_has_extra_members_with_aliasesc          	   C   s,   |  td G dd dt}W d Q R X d S )Nz#member order does not match _order_c               @   s    e Zd ZdZdZdZdZdZdS )z4TestOrder.test_enum_has_extra_members.<locals>.Colorzred green bluer   r   r   r]   N)r   r   r   r"  r   r   r   purpler   r   r   r   r     s
   r   )r&  r   r   )r>   r   r   r   r   test_enum_has_extra_members  s    z%TestOrder.test_enum_has_extra_membersc          	   C   s,   |  td G dd dt}W d Q R X d S )Nz#member order does not match _order_c               @   s$   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>.Colorzred green bluer   r   r   r]   N)	r   r   r   r"  r   r   r   r*  r$  r   r   r   r   r     s   r   )r&  r   r   )r>   r   r   r   r   (test_enum_has_extra_members_with_aliases  s    z2TestOrder.test_enum_has_extra_members_with_aliasesN)
r   r   r   r#  r%  r'  r(  r)  r+  r,  r   r   r   r   r!  W  s   		r!  c               @   s   e Zd ZdZG dd deZG dd deZG dd de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ejd2d3 Zd4S )5TestFlagzTests of the Flags.c               @   s   e Zd Zd\ZZZdS )zTestFlag.Perm)r]   r   r   N)r   r   r   RWXr   r   r   r   Perm  s   r1  c               @   s$   e Zd ZdZdZdZdZeeB ZdS )zTestFlag.Colorr   r   r   r]   N)r   r   r   BLACKr  r  r  PURPLEr   r   r   r   r     s
   r   c               @   s    e Zd ZdZdZdZdZdZdS )zTestFlag.Openr   r   r   r   i   N)r   r   r   ROWORWACCEr   r   r   r   Open  s
   r9  c             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 )NzPerm.RzPerm.WzPerm.XzPerm.R|Wz
Perm.R|W|Xr   zPerm.0zPerm.W|XzPerm.R|XzOpen.ROzOpen.WOzOpen.ACzOpen.CEz
Open.CE|WOzOpen.CE|AC|RW|WOz
Open.CE|RWzOpen.RW)r1  rz   ru   r.  r/  r0  r9  r4  r5  r7  r8  )r>   r1  r9  r   r   r   test_str  s0     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 )Nz<Perm.R: 4>z<Perm.W: 2>z<Perm.X: 1>z<Perm.R|W: 6>z<Perm.R|W|X: 7>r   z<Perm.0: 0>z<Perm.W|X: 3>z<Perm.R|X: 5>r:  z<Open.RO: 0>z<Open.WO: 1>z<Open.AC: 3>z<Open.CE: 524288>z<Open.CE|WO: 524289>z<Open.CE|AC|RW|WO: 524291>z<Open.CE|RW: 524290>z<Open.RW: 2>)r1  rz   r   r.  r/  r0  r9  r4  r5  r7  r8  )r>   r1  r9  r   r   r   	test_repr  s0     zTestFlag.test_reprc             C   s   | j }xd|D ]\}xV|D ]N}| ||B ||j|jB  | ||B j|j|jB  | t||B | qW qW x|D ]}| ||B | qrW | j}| |j|jB |j d S )N)r1  rz   r   r   r   r9  r4  r8  )r>   r1  r   jr9  r   r   r   test_or  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 }xH|D ]@}x:|D ]2}| ||@ j|j|j@  | t||@ | qfW q\W x<|D ]4}| ||@ | | ||@ | | ||@ | qW | j	}	| |	j
|	j@ |	j
 d S )Nr   )r1  r.  r/  r0  r   rz   r   r   r   r9  r4  r8  )
r>   r1  r6  RXWXRWXvaluesr   r=  r9  r   r   r   test_and  s     


zTestFlag.test_andc             C   s   | j }xH|D ]@}x:|D ]2}| ||A j|j|jA  | t||A | qW qW x4|D ],}| ||dA | | |d|A | qVW | j}| |j|jA |j | |j|jA |j d S )Nr   )r1  rz   r   r   r   r9  r4  r8  )r>   r1  r   r=  r9  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 }x.|D ]&}| t| | | |  | q\W x|D ]}| |  | qW | j}| |j	|j	 @ |j
 | |j	|jB |j	 @ |j d S )Nr   )r1  r.  r/  r0  r   r   r   rz   r9  r5  r4  r8  )	r>   r1  r6  r?  r@  rA  rB  r   r9  r   r   r   test_invert
  s    

zTestFlag.test_invertc             C   sL   | j }x|D ]}| | qW | j}x"|D ]}| t|jt| q*W d S )N)r1  r=   r9  rz   r   r   )r>   r1  fr9  r   r   r   r     s    

zTestFlag.test_boolc             C   s   t dd}t|}| t|t| | t|d| | ||j|j|jg xrtd D ]b\}}d|> }||}| |j	| | t
|j	t | |j| | || | t
|| q^W d S )Nr1  zR W Xr   r   )r   r   rz   r   r.  r/  r0  r   r   r   r   r   r~   r   r   )r>   r1  r   r   nr   r   r   r   r    test_programatic_function_string"  s    
z)TestFlag.test_programatic_function_stringc             C   s   t dddd}t|}| t|t| | t|d| | ||j|j|jg xrtd D ]b\}}d|> }||}| |j	| | t
|j	t | |j| | || | t
|| qbW d S )Nr1  zR W Xr  )r=  r   )r   r   rz   r   r.  r/  r0  r   r   r   r   r   r~   r   r   )r>   r1  r   r   rG  r   r   r   r   r   +test_programatic_function_string_with_start1  s    z4TestFlag.test_programatic_function_string_with_startc             C   s   t ddddg}t|}| t|t| | t|d| | ||j|j|jg xrtd D ]b\}}d|> }||}| |j	| | t
|j	t | |j| | || | t
|| qdW d S )Nr1  r.  r/  r0  r   zR W Xr   )r   r   rz   r   r.  r/  r0  r   r   r   r   r   r~   r   r   )r>   r1  r   r   rG  r   r   r   r   r   %test_programatic_function_string_list@  s    z.TestFlag.test_programatic_function_string_listc             C   s   t dd}t|}| t|t| | t|d| | ||j|j|jg xztd D ]j\}}dd| d > }||}| |j	| | t
|j	t | |j| | || | t
|| q^W d S )Nr1  ))r.  r   )r/  r  )r0  r  r   zR W Xr   r   )r   r   rz   r   r.  r/  r0  r   r   r   r   r   r~   r   r   )r>   r1  r   r   rG  r   r   r   r   r   "test_programatic_function_iterableO  s    
z+TestFlag.test_programatic_function_iterablec             C   s   t dtd}t|}| t|t| | t|d| | ||j|j|jg xztd	 D ]j\}}dd| d > }||}| |j
| | t|j
t | |j| | || | t|| qbW d S )Nr1  ))r.  r   )r/  r  )r0  r  r   zR W Xr   r   )r   r   r   rz   r   r.  r/  r0  r   r   r   r   r   r~   r   r   )r>   r1  r   r   rG  r   r   r   r   r   #test_programatic_function_from_dict^  s    z,TestFlag.test_programatic_function_from_dictc             C   s2   t ttrtt| jtjtjB  t| jt d S )N)r  r   r  r0   r   r   r   )r>   r   r   r   test_picklem  s    
zTestFlag.test_picklec          	   C   s   | j }| j}| |j|k | |j|k | t | d|k W d Q R X | t | d|k W d Q R X | t | d|k W d Q R X | t | d|k W d Q R X d S )Nr2  r4  r   )r9  r   r9   r2  r4  r   r   )r>   r9  r   r   r   r   r   s  s    zTestFlag.test_containsc       	      C   s   | j }|\}}}||B }||B }||B }||B |B }| ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k d S )N)r1  r=   r9   )	r>   r1  r.  r/  r0  r6  r?  r@  rA  r   r   r   r     s$    
zTestFlag.test_member_containsc             C   s`   G dd dt }| t||j|j|jg | |jjd | |jjd | |jjd d S )Nc               @   s   e Zd Ze Ze Ze ZdS )z(TestFlag.test_auto_number.<locals>.ColorN)r   r   r   r	   r   r   r   r   r   r   r   r     s   r   r   r   r]   )r   rz   r   r   r   r   r   )r>   r   r   r   r   r    s
    zTestFlag.test_auto_numberc          	   C   s,   |  td G dd dt}W d Q R X d S )Nz Invalid Flag value: .not an int.c               @   s   e Zd ZdZe ZdS )z0TestFlag.test_auto_number_garbage.<locals>.Colorz
not an intN)r   r   r   r   r	   r   r   r   r   r   r     s   r   )r&  r   r   )r>   r   r   r   r   test_auto_number_garbage  s    z!TestFlag.test_auto_number_garbagec             C   st   G dd dt }| td|d | td|d | td|d | td|d | td|d | td|d d S )	Nc               @   s   e Zd ZdZdZdZdS )z0TestFlag.test_cascading_failure.<locals>.Bizarrer   r]   r   N)r   r   r   r  drF  r   r   r   r   Bizarre  s   rP  z5 is not a valid Bizarrerg   z2 is not a valid Bizarrer   z1 is not a valid Bizarrer   )r   r&  r   )r>   rP  r   r   r   test_cascading_failure  s    zTestFlag.test_cascading_failurec             C   s0   G dd dt }| |j|j|jgt| d S )Nc               @   s"   e Zd Ze  ZZe Ze ZdS )z+TestFlag.test_duplicate_auto.<locals>.DupesN)r   r   r   r	   r  r  r  r  r   r   r   r   r    s   
r  )r   rz   r  r  r  r   )r>   r  r   r   r   r    s    zTestFlag.test_duplicate_autoc             C   s(   G dd dt }| t|dd d S )Nc               @   s   e Zd ZdZdZdZdS )z&TestFlag.test_bizarre.<locals>.Bizarrer   r]   r   N)r   r   r   r  r  rO  r   r   r   r   rP    s   rP  r   z<Bizarre.d|c|b: 7>)r   rz   r   )r>   rP  r   r   r   test_bizarre  s    zTestFlag.test_bizarrec             C   sP  G dd d}G dd 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 G dd d||t }| |jjd | |jjd | |jjd	 | |jjd
 | t|jd d S )Nc               @   s   e Zd Zedd ZdS )z.TestFlag.test_multiple_mixin.<locals>.AllMixinc             S   s@   t | }d }|r6|d }x|dd  D ]}||O }q&W || _|S )Nr   r   )r   ALL)r   members	all_valuer   r   r   r   rS    s    z2TestFlag.test_multiple_mixin.<locals>.AllMixin.ALLN)r   r   r   rT   rS  r   r   r   r   AllMixin  s   rV  c               @   s   e Zd Zdd ZdS )z.TestFlag.test_multiple_mixin.<locals>.StrMixinc             S   s
   | j  S )N)r  r  )r>   r   r   r   r    s    z6TestFlag.test_multiple_mixin.<locals>.StrMixin.__str__N)r   r   r   r  r   r   r   r   r    s   r  c               @   s   e Zd Ze Ze Ze ZdS )z+TestFlag.test_multiple_mixin.<locals>.ColorN)r   r   r   r	   r  r  r  r   r   r   r   r     s   r   r   r   r]   r   z
Color.BLUEc               @   s   e Zd Ze Ze Ze ZdS )z+TestFlag.test_multiple_mixin.<locals>.ColorN)r   r   r   r	   r  r  r  r   r   r   r   r     s   r   c               @   s   e Zd Ze Ze Ze ZdS )z+TestFlag.test_multiple_mixin.<locals>.ColorN)r   r   r   r	   r  r  r  r   r   r   r   r     s   )r   rz   r  r   r  r  rS  ru   )r>   rV  r  r   r   r   r   r    s(    zTestFlag.test_multiple_mixinc          	      sx   G dd dt  t d fddfddtdD }t| W d Q R X | d	 | d
td d S )Nc               @   sL   e 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>.TestFlagc             S   s   | |kS )Nr   )r>   r  r   r   r   r1    s    z7TestFlag.test_unique_composite.<locals>.TestFlag.__eq__c             S   s
   t | jS )N)hashr   )r>   r   r   r   __hash__  s    z9TestFlag.test_unique_composite.<locals>.TestFlag.__hash__N)r   r   r   r	   r   r   rU  fourfivesixseveneightr1  rX  r   r   r   r   r-    s   r-  Fc                 sB   y$xt dD ]}  |  qW W n tk
r<   dY nX d S )N   T)r,   addr  )r   )r-  failedseenr   r   
cycle_enum  s
    z2TestFlag.test_unique_composite.<locals>.cycle_enumc                s   g | ]}t j d qS ))r/   )	threadingThread)r   rJ   )rb  r   r   r   	  s   z2TestFlag.test_unique_composite.<locals>.<listcomp>r  z;at least one thread failed while creating composite membersr^  z"too many composite members created)r   r{   r,   r   start_threadsr9   rz   r   )r>   threadsr   )r-  rb  r`  ra  r   test_unique_composite  s    

zTestFlag.test_unique_compositeN) r   r   r   r!   r   r1  r   r9  r;  r<  r>  rC  rD  rE  r   rH  rI  rJ  rK  rL  rM  r   r   r  rN  rQ  r  rR  r  r   reap_threadsrg  r   r   r   r   r-    s4   +r-  c               @   s   e Zd ZdZG dd deZG dd deZG dd de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ejd,d- Zd.S )/TestIntFlagzTests of the IntFlags.c               @   s   e Zd ZdZdZdZdS )zTestIntFlag.Permr   r   r]   N)r   r   r   r0  r/  r.  r   r   r   r   r1  	  s   r1  c               @   s$   e Zd ZdZdZdZdZeeB ZdS )zTestIntFlag.Colorr   r   r   r]   N)r   r   r   r2  r  r  r  r3  r   r   r   r   r   	  s
   r   c               @   s    e Zd ZdZdZdZdZdZdS )zTestIntFlag.Openr   r   r   r   i   N)r   r   r   r4  r5  r6  r7  r8  r   r   r   r   r9  "	  s
   r9  c             C   s   | j }| j}x*|D ]"}| t|| | ||j qW | t|j|jB | | |j|jB d x*|D ]"}| t|| | ||j qjW | t|j|j	B | | |j|j	B d d S )Nr   )
r1  r9  r=   r  rz   r   r/  r0  r5  r6  )r>   r1  r9  rF  r   r   r   	test_type)	  s    

zTestIntFlag.test_typec             C   sn  | j }| 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|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|dd | j}| t|jd | t|jd | t|j	d | t|j|j
B d | t|j|j
B d | t|dd | t|j d | t|j d | t|j	 d | t|j|j
B  d | t|j|j
B  d | t|dd d S )NzPerm.RzPerm.WzPerm.XzPerm.R|Wz
Perm.R|W|Xr  zPerm.8|Rr   zPerm.0zPerm.8zPerm.W|XzPerm.R|XzPerm.-8r:  izOpen.ROzOpen.WOzOpen.ACzOpen.CEz
Open.CE|WOr]   zOpen.4zOpen.CE|AC|RW|WOz
Open.CE|RWzOpen.AC|RW|WOzOpen.RW)r1  rz   ru   r.  r/  r0  r9  r4  r5  r7  r8  )r>   r1  r9  r   r   r   r;  8	  s<     zTestIntFlag.test_strc             C   sn  | j }| 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|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|dd | j}| t|jd | t|jd | t|j	d | t|j|j
B d | t|j|j
B d | t|dd | t|j d | t|j d | t|j	 d | t|j|j
B  d | t|j|j
B  d  | t|d!d" d S )#Nz<Perm.R: 4>z<Perm.W: 2>z<Perm.X: 1>z<Perm.R|W: 6>z<Perm.R|W|X: 7>r  z<Perm.8|R: 12>r   z<Perm.0: 0>z<Perm.8: 8>z<Perm.W|X: -5>z<Perm.R|X: -3>z<Perm.R|W: -2>z<Perm.X: -7>z<Perm.-8: -8>z<Perm.W|X: -13>r:  z<Perm.R|W|X: -1>iz<Perm.R|W|X: -9>z<Open.RO: 0>z<Open.WO: 1>z<Open.AC: 3>z<Open.CE: 524288>z<Open.CE|WO: 524289>r]   z<Open.4: 4>z<Open.CE|AC|RW|WO: -1>z<Open.CE|RW: -2>z<Open.CE: -4>z<Open.AC|RW|WO: -524289>z<Open.RW: -524290>rk  z<Open.CE|AC|RW|WO: -5>)r1  rz   r   r.  r/  r0  r9  r4  r5  r7  r8  )r>   r1  r9  r   r   r   r<  Y	  s<     zTestIntFlag.test_reprc             C   s^  | j }x|D ]}xR|D ]J}| ||B |j|jB  | ||B j|j|jB  | t||B | qW xtdD ]}| ||B |j|B  | ||B j|j|B  | t||B | | ||B ||jB  | ||B j||jB  | t||B | qnW qW x>|D ]6}| ||B | | |dB | | d|B | qW | j}| |j|jB |j d S )Nr  r   )	r1  rz   r   r   r   r,   r9  r4  r8  )r>   r1  r   r=  r9  r   r   r   r>  z	  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 }x|D ]}xp|D ]h}| ||@ |j|j@ d||f  | ||@ j|j|j@ d||f  | t||@ |d||f  qjW xt	dD ]}| ||@ |j|@  | ||@ j|j|@  | t||@ | | ||@ ||j@  | ||@ j||j@  | t||@ | qW q^W x>|D ]6}| ||@ | | |d@ | | d|@ | qvW | j
}	| |	j|	j@ |	j d S )Nr   zi is %r, j is %rr  r   )r1  r.  r/  r0  r   rz   r   r   r   r,   r9  r4  r8  )
r>   r1  r6  r?  r@  rA  rB  r   r=  r9  r   r   r   rC  	  s0    
"$"
zTestIntFlag.test_andc             C   sd  | j }x|D ]}xR|D ]J}| ||A |j|jA  | ||A j|j|jA  | t||A | qW xtdD ]}| ||A |j|A  | ||A j|j|A  | t||A | | ||A ||jA  | ||A j||jA  | t||A | qnW qW x.|D ]&}| |dA | | d|A | qW | j}| |j|jA |j | |j|jA |j d S )Nr  r   )	r1  rz   r   r   r   r,   r9  r4  r8  )r>   r1  r   r=  r9  r   r   r   rD  	  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 }xT|D ]L}| | |j  | | j|j  | t| | | |  | q\W x|D ]}| |  | qW | j	}| |j
|j
 @ |j | |j
|jB |j
 @ |j d S )Nr   )r1  r.  r/  r0  r   rz   r   r   r   r9  r5  r4  r8  )	r>   r1  r6  r?  r@  rA  rB  r   r9  r   r   r   rE  	  s     

zTestIntFlag.test_invertc             C   s   t dd}t|}| t|t| | t|d| | ||j|j|jg x~td D ]n\}}d|> }||}| |j	| | t
|j	t | || | |j| | || | t
|| q^W d S )Nr1  zR W Xr   r   )r   r   rz   r   r.  r/  r0  r   r   r   r   r   r~   r   r   )r>   r1  r   r   rG  r   r   r   r   r   rH  	  s    
z,TestIntFlag.test_programatic_function_stringc             C   s   t dddd}t|}| t|t| | t|d| | ||j|j|jg x~td D ]n\}}d|> }||}| |j	| | t
|j	t | || | |j| | || | t
|| qbW d S )Nr1  zR W Xr  )r=  r   )r   r   rz   r   r.  r/  r0  r   r   r   r   r   r~   r   r   )r>   r1  r   r   rG  r   r   r   r   r   rI  	  s    z7TestIntFlag.test_programatic_function_string_with_startc             C   s   t ddddg}t|}| t|t| | t|d| | ||j|j|jg x~td D ]n\}}d|> }||}| |j	| | t
|j	t | || | |j| | || | t
|| qdW d S )Nr1  r.  r/  r0  r   zR W Xr   )r   r   rz   r   r.  r/  r0  r   r   r   r   r   r~   r   r   )r>   r1  r   r   rG  r   r   r   r   r   rJ  	  s    z1TestIntFlag.test_programatic_function_string_listc             C   s   t dd}t|}| t|t| | t|d| | ||j|j|jg xtd D ]v\}}dd| d > }||}| |j	| | t
|j	t | || | |j| | || | t
|| q^W d S )Nr1  ))r.  r   )r/  r  )r0  r  r   zR W Xr   r   )r   r   rz   r   r.  r/  r0  r   r   r   r   r   r~   r   r   )r>   r1  r   r   rG  r   r   r   r   r   rK   
  s    
z.TestIntFlag.test_programatic_function_iterablec             C   s   t dtd}t|}| t|t| | t|d| | ||j|j|jg xtd	 D ]v\}}dd| d > }||}| |j
| | t|j
t | || | |j| | || | t|| qbW d S )Nr1  ))r.  r   )r/  r  )r0  r  r   zR W Xr   r   )r   r   r   rz   r   r.  r/  r0  r   r   r   r   r   r~   r   r   )r>   r1  r   r   rG  r   r   r   r   r   rL  
  s    z/TestIntFlag.test_programatic_function_from_dictc             C   sx   t dg }t|}| t|t| | t|d| t dg }t|}| t|t| | t|d| d S )Nr1  r   Thing)r:   r   r   rz   r   r   )r>   r1  r   rl  r   r   r   )test_programatic_function_from_empty_list!
  s    z5TestIntFlag.test_programatic_function_from_empty_listc             C   sp   t dd}t|}| t|t| | t|d| t dd}| t|t| | t|d| d S )Nr1  r   r   rl  )r:   r   r   rz   r   r   )r>   r1  r   rl  r   r   r   *test_programatic_function_from_empty_tuple,
  s    z6TestIntFlag.test_programatic_function_from_empty_tuplec          	   C   s   | j }| j}| |j|k | |j|k | |j|k | |j|k | t | d|k W d Q R X | t | d|k W d Q R X | t | d|k W d Q R X | t | d|k W d Q R X d S )Nr  r6  r   )r   r9  r=   r  r6  r9   r   r   )r>   r   r9  r   r   r   r   5
  s    zTestIntFlag.test_containsc       	   	   C   s  | j }|\}}}||B }||B }||B }||B |B }| ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | t | d|k W d Q R X d S )NZswallow)r1  r=   r9   r   r   )	r>   r1  r.  r/  r0  r6  r?  r@  rA  r   r   r   r   E
  s(    
z TestIntFlag.test_member_containsc             C   sL   | j }x|D ]}| | qW | j}x"|D ]}| t|jt| q*W d S )N)r1  r=   r9  rz   r   r   )r>   r1  rF  r9  r   r   r   r   [
  s    

zTestIntFlag.test_boolc             C   sP  G dd d}G dd 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 G dd d||t }| |jjd | |jjd | |jjd	 | |jjd
 | t|jd d S )Nc               @   s   e Zd Zedd ZdS )z1TestIntFlag.test_multiple_mixin.<locals>.AllMixinc             S   s@   t | }d }|r6|d }x|dd  D ]}||O }q&W || _|S )Nr   r   )r   rS  )r   rT  rU  r   r   r   r   rS  e
  s    z5TestIntFlag.test_multiple_mixin.<locals>.AllMixin.ALLN)r   r   r   rT   rS  r   r   r   r   rV  d
  s   rV  c               @   s   e Zd Zdd ZdS )z1TestIntFlag.test_multiple_mixin.<locals>.StrMixinc             S   s
   | j  S )N)r  r  )r>   r   r   r   r  p
  s    z9TestIntFlag.test_multiple_mixin.<locals>.StrMixin.__str__N)r   r   r   r  r   r   r   r   r  o
  s   r  c               @   s   e Zd Ze Ze Ze ZdS )z.TestIntFlag.test_multiple_mixin.<locals>.ColorN)r   r   r   r	   r  r  r  r   r   r   r   r   r
  s   r   r   r   r]   r   z
Color.BLUEc               @   s   e Zd Ze Ze Ze ZdS )z.TestIntFlag.test_multiple_mixin.<locals>.ColorN)r   r   r   r	   r  r  r  r   r   r   r   r   {
  s   r   c               @   s   e Zd Ze Ze Ze ZdS )z.TestIntFlag.test_multiple_mixin.<locals>.ColorN)r   r   r   r	   r  r  r  r   r   r   r   r   
  s   )r   rz   r  r   r  r  rS  ru   )r>   rV  r  r   r   r   r   r  c
  s(    zTestIntFlag.test_multiple_mixinc          	      sx   G dd dt  t d fddfddtdD }t| W d Q R X | d	 | d
td d S )Nc               @   sL   e 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 )z3TestIntFlag.test_unique_composite.<locals>.TestFlagc             S   s   | |kS )Nr   )r>   r  r   r   r   r1  
  s    z:TestIntFlag.test_unique_composite.<locals>.TestFlag.__eq__c             S   s
   t | jS )N)rW  r   )r>   r   r   r   rX  
  s    z<TestIntFlag.test_unique_composite.<locals>.TestFlag.__hash__N)r   r   r   r	   r   r   rU  rY  rZ  r[  r\  r]  r1  rX  r   r   r   r   r-  
  s   r-  Fc                 sB   y$xt dD ]}  |  qW W n tk
r<   dY nX d S )Nr^  T)r,   r_  r  )r   )r-  r`  ra  r   r   rb  
  s
    z5TestIntFlag.test_unique_composite.<locals>.cycle_enumc                s   g | ]}t j d qS ))r/   )rc  rd  )r   rJ   )rb  r   r   r   
  s   z5TestIntFlag.test_unique_composite.<locals>.<listcomp>r  z;at least one thread failed while creating composite membersr^  z"too many composite members created)r   r{   r,   r   re  r9   rz   r   )r>   rf  r   )r-  rb  r`  ra  r   rg  
  s    

z!TestIntFlag.test_unique_compositeN)r   r   r   r!   r   r1  r   r9  rj  r;  r<  r>  rC  rD  rE  rH  rI  rJ  rK  rL  rm  rn  r   r   r   r  r   rh  rg  r   r   r   r   ri  	  s.   !!	+ri  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 Q R X d S )N	empty_abc) ri   rj   )r   r   r   )r>   rp  r   r   r   test_empty_string
  s    z-TestEmptyAndNonLatinStrings.test_empty_stringc             C   s&   t dd}t|d}| |jd d S )N	greek_abc)u   αri   rj   u   αr   )r   r   rz   r   )r>   rs  r  r   r   r   test_non_latin_character_string
  s    

z;TestEmptyAndNonLatinStrings.test_non_latin_character_stringc             C   s&   t dd}t|d}| |jd d S )N
hebrew_123)u   א23u   אr   )r   r   rz   r   )r>   ru  r  r   r   r   test_non_latin_number_string
  s    

z8TestEmptyAndNonLatinStrings.test_non_latin_number_stringN)r   r   r   rr  rt  rx  r   r   r   r   ro  
  s   ro  c               @   s$   e Zd Zdd Zdd Zdd ZdS )
TestUniquec             C   s,   t G dd dt}t G dd dt}d S )Nc               @   s   e Zd ZdZdZdZdS )z+TestUnique.test_unique_clean.<locals>.Cleanr   rX  g      @N)r   r   r   r   r   rY  r   r   r   r   Clean
  s   rz  c               @   s   e Zd ZdZdZdZdS )z-TestUnique.test_unique_clean.<locals>.Cleanerr   r   r   N)r   r   r   singledoubletripler   r   r   r   Cleaner
  s   r~  )r   r   r   )r>   rz  r~  r   r   r   test_unique_clean
  s    zTestUnique.test_unique_cleanc          	   C   s\   |  td tG dd dt}W d Q R X |  td tG dd dt}W d Q R X d S )Nz	tres.*onec               @   s   e Zd ZdZdZdZdS )z+TestUnique.test_unique_dirty.<locals>.Dirtyr   rX  N)r   r   r   r   r   rY  r   r   r   r   Dirty
  s   r  zdouble.*single.*turkey.*triplec               @   s   e Zd ZdZdZdZdZdS )z-TestUnique.test_unique_dirty.<locals>.Dirtierr   r   N)r   r   r   r{  r|  r}  Zturkeyr   r   r   r   Dirtier
  s   r  )r&  r   r   r   r   )r>   r  r  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               @   s   e Zd ZdZdZdZdS )z/TestUnique.test_unique_with_name.<locals>.Sillyr   rX  r   N)r   r   r   r   r   r~   r   r   r   r   Silly
  s   r  c               @   s   e Zd ZdZdZdZdZdS )z1TestUnique.test_unique_with_name.<locals>.Sillierr   r   r   r]   N)r   r   r   r{  r~   r}  r   r   r   r   r   Sillier
  s   r  )r   r   r   )r>   r  r  r   r   r   test_unique_with_name
  s    z TestUnique.test_unique_with_nameN)r   r   r   r  r  r  r   r   r   r   ry  
  s   ry  a  Help on class Color in module %s:

class Color(enum.Enum)
 |  Color(value, names=None, *, module=None, qualname=None, type=None, start=1)
 |  
 |  An enumeration.
 |  
 |  Method resolution order:
 |      Color
 |      enum.Enum
 |      builtins.object
 |  
 |  Data and other attributes defined here:
 |  
 |  blue = <Color.blue: 3>
 |  
 |  green = <Color.green: 2>
 |  
 |  red = <Color.red: 1>
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from enum.Enum:
 |  
 |  name
 |      The name of the Enum member.
 |  
 |  value
 |      The value of the Enum member.
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from enum.EnumMeta:
 |  
 |  __members__
 |      Returns a mapping of member name->value.
 |      
 |      This mapping lists all enum members, including aliases. Note that this
 |      is a read-only view of the internal mapping.a  Help on class Color in module %s:

class Color(enum.Enum)
 |  Color(value, names=None, *, module=None, qualname=None, type=None, start=1)
 |  
 |  Method resolution order:
 |      Color
 |      enum.Enum
 |      builtins.object
 |  
 |  Data and other attributes defined here:
 |  
 |  blue = <Color.blue: 3>
 |  
 |  green = <Color.green: 2>
 |  
 |  red = <Color.red: 1>
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from enum.Enum:
 |  
 |  name
 |  
 |  value
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from enum.EnumMeta:
 |  
 |  __members__c               @   s8   e Zd ZdZG dd deZdd Zdd Zdd	 ZdS )

TestStdLibNc               @   s   e Zd ZdZdZdZdS )zTestStdLib.Colorr   r   r   N)r   r   r   r   r   r   r   r   r   r   r   ?  s   r   c             C   sT   t jd krtt }ntt }t }tj|d}|| j |	 
 }| || d S )N)output)r    r!   !expected_help_output_without_docsr   expected_help_output_with_docsr
   pydocHelperr   getvaluestriprz   )r>   expected_textr  helperresultr   r   r   
test_pydocD  s    


zTestStdLib.test_pydocc             C   s   t dtfdd| jjfdtfd| jjfd| jjfdtjd fd| jj	fd	tjd	 ff	}t t
| j}| | |  d
}xL| D ]@}|| || krt  tdd||| || df dd d}qW |r| d d S )Nrx   )r!   zAn enumeration.ry   r   r   r   r~   r   r   Fz.
%s
     key: %s
  result: %s
expected: %s
%s
zK===========================================================================rq  )sepTz/result does not equal expected, see print above)dictr   r   ry   r   r   r   r   __dict__r   inspect
getmembersrz   keysr  fail)r>   rB  r  r`  r   r   r   r   test_inspect_getmembersP  s*    



z"TestStdLib.test_inspect_getmembersc             C   s6  ddl m} |ddttd|dd| jdd|dd	ttjd|d
d| jtd|dd| j| jjd|dd| j| jjd|dd| j| jj	d|ddt
t
jd d|ddt
t
jd dg	}|jdd d tt | j}|jdd d d}x:t||D ],\}}||krtdd||df dd d}qW |r2| d d S )Nr   )	Attributerx   data)r~   kinddefining_classrv  r!   zAn enumeration.ry   r   r   r   r   r   r~   r   c             S   s   | j S )N)r~   )r  r   r   r   r     r   z>TestStdLib.test_inspect_classify_class_attrs.<locals>.<lambda>)keyc             S   s   | j S )N)r~   )r  r   r   r   r     r   Fz
%s
%s
%s
%s
zK===========================================================================rq  )r  Tz/result does not equal expected, see print above)r  r  rv  r   r   ry   r   r   r   r   r   r  sortr   classify_class_attrsr  r  r  )r>   r  rB  r  r`  r   rr   r   r   !test_inspect_classify_class_attrsh  s:    


z,TestStdLib.test_inspect_classify_class_attrs)	r   r   r   maxDiffr   r   r  r  r  r   r   r   r   r  ;  s
   r  c               @   s   e Zd Zdd ZdS )MiscTestCasec             C   s   t | t d S )N)r   check__all__r:   )r>   r   r   r   test__all__  s    zMiscTestCase.test__all__N)r   r   r   r  r   r   r   r   r    s   r  rg   c               @   s   e Zd Zdd Zdd ZdS )TestIntEnumConvertc             C   s4   t jjddtdk dd d}| |djd d S )	NUnittestConvert)ztest.test_enum__main__r  c             S   s
   |  dS )NCONVERT_TEST_)
startswith)r  r   r   r   r     r   zGTestIntEnumConvert.test_convert_value_lookup_priority.<locals>.<lambda>)filterrg   CONVERT_TEST_NAME_A)r:   r   _convertr   rz   r~   )r>   rj  r   r   r   "test_convert_value_lookup_priority  s
    
z5TestIntEnumConvert.test_convert_value_lookup_priorityc             C   s   t jjddtdk dd d}| |j|j | |jd | |jd | |j	d | |j
d | jdd	 t|D g d
d d S )Nr  )ztest.test_enumr  r  c             S   s
   |  dS )Nr  )r  )r  r   r   r   r     r   z1TestIntEnumConvert.test_convert.<locals>.<lambda>)r  rg   c             S   s    g | ]}|d d dkr|qS )r   r   )ZCOrK   r   )r   r~   r   r   r   r     s    z3TestIntEnumConvert.test_convert.<locals>.<listcomp>z&Names other than CONVERT_TEST_* found.)msg)r:   r   r  r   rz   CONVERT_TEST_NAME_Fr  CONVERT_TEST_NAME_BCONVERT_TEST_NAME_CCONVERT_TEST_NAME_DCONVERT_TEST_NAME_Er|   )r>   rj  r   r   r   test_convert  s    
zTestIntEnumConvert.test_convertN)r   r   r   r  r  r   r   r   r   r    s   
r  r  )N)Ar:   r  r  unittestrc  collectionsr   r   r   r   r   r   r   r	   ior
   pickler   r   r   r   r   r   rv   r   ImportErrorr   r  r  r   r   rt   r   r   ru   r    r"   r   r$   r&   r'   r*   r0   r3   TestCaser4   rT   r\   r!  r-  ri  ro  ry  r  r  r  r  r  r  r  r  r  r  r  mainr   r   r   r   <module>   s   $

             W>      %TP
