o
    HXh                 
   @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ 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mZmZ d dlmZ ejdd Zz
G d	d
 d
eZW n eyw Z  ze ZW Y dZ [ ndZ [ ww zG dd de!eZ"W n ey Z  ze Z"W Y dZ [ ndZ [ ww zG dd de#eZ$W n ey Z  ze Z$W Y dZ [ ndZ [ ww z
G dd deZ%W n ey Z  ze Z%W Y dZ [ ndZ [ ww zG dd de&eZ'G dd de'Z(W n ey Z  ze Z(W Y dZ [ ndZ [ ww z	edde)dZ*W n ey Z  ze Z*W Y dZ [ ndZ [ ww zeddZ+W n ey: Z  ze Z+W Y dZ [ ndZ [ ww z	eddddZ,W n eyY Z  ze Z,W Y dZ [ ndZ [ ww z
G dd deZ-W n
 eyn   Y nw d?d d!Z.d"d# Z/G d$d% d%ej0Z1G d&d' d'Z2G d(d) d)ej0Z3G d*d+ d+ej0Z4G d,d- d-ej0Z5G d.d/ d/ej0Z6G d0d1 d1ej0Z7G d2d3 d3ej0Z8d4Z9d5Z:G d6d7 d7ej0Z;G d8d9 d9ej0Z<d:Z=d:Z>d:Z?d:Z@d:ZAd:ZBG d;d< d<ej0ZCG d=d% d%ej0Z1e)d>kreD  dS dS )@    N)OrderedDict)EnumIntEnumEnumMetaFlagIntFlaguniqueauto)StringIO)dumpsloadsPicklingErrorHIGHEST_PROTOCOL)	ALWAYS_EQcheck__all__threading_helper)	timedelta   c                   @      e Zd ZdZdZdZdS )Stooges   r      N__name__
__module____qualname__ZLARRYCURLYMOE r   r   8/opt/python-3.10.19/usr/lib/python3.10/test/test_enum.pyr          r   c                   @   r   )
IntStoogesr   r   r   Nr   r   r   r   r   r!      r    r!   c                   @   r   )FloatStoogesg=
ףp=?g(\@gR$_	$	@Nr   r   r   r   r   r"   "   r    r"   c                   @   r   )FlagStoogesr   r   r   Nr   r   r   r   r   r#   *   r    r#   c                   @      e Zd ZdS )StrEnumNr   r   r   r   r   r   r   r%   3       r%   c                   @      e Zd ZdZdZdS )NameGuido van RossumzBarry WarsawN)r   r   r   BDFLZFLUFLr   r   r   r   r)   5       r)   Questionzwho what when where whymoduleAnswerzhim this then there becauseTheoryzrule law suppositionspanish_inquisition)qualnamec                   @   r   )Fruitr   r   r   N)r   r   r   ZTOMATOZBANANAZCHERRYr   r   r   r   r4   L   r    r4   c                 C   s8   |d u r|}t td D ]}| tt||d| qd S Nr   )protocol)ranger   r   r   )	assertionsourcetargetr6   r   r   r   test_pickle_dump_loadS   s
   r;   c              	   C   sJ   t td D ]}| | t||d W d    n1 sw   Y  qd S r5   )r7   r   r   )r8   	exceptionobjr6   r   r   r   test_pickle_exceptionY   s   
r>   c                   @   $   e Zd Zdd Zdd Zdd ZdS )TestHelpersc                 C   sN   G dd d}dD ]}| }|  t| t||d | t| q	d S )Nc                   @   r$   )z+TestHelpers.test_is_descriptor.<locals>.fooNr&   r   r   r   r   foob   r'   rA   )__get____set__
__delete__r   )assertFalseenum_is_descriptorsetattr
assertTrue)selfrA   attrr=   r   r   r   test_is_descriptora   s   zTestHelpers.test_is_descriptorc                 C   8   dD ]
}|  t| qdD ]
}| t| qd S )N)_a_Z_aa_)aa__a__aa____a___a____a________________)rI   rF   
_is_sunderrE   rJ   sr   r   r   test_is_sunderj   s
   zTestHelpers.test_is_sunderc                 C   rM   )N)rT   Z__aa__)rO   rP   rQ   rR   rS   rN   rU   rV   rW   rX   rY   rZ   r[   )rI   rF   
_is_dunderrE   r]   r   r   r   test_is_dunderr   s
   zTestHelpers.test_is_dunderN)r   r   r   rL   r_   ra   r   r   r   r   r@   ^   s    	r@   c                   @   s   e Zd ZdddZdd ZdS )classpropertyNc                 C   s2   || _ || _|| _|d u r|d ur|j}|| _d S N)fgetfsetfdel__doc__)rJ   rd   re   rf   docr   r   r   __init__}   s   
zclassproperty.__init__c                 C   s
   |  |S rc   )rd   )rJ   instance
ownerclassr   r   r   rB         
zclassproperty.__get__)NNNN)r   r   r   ri   rB   r   r   r   r   rb   {   s    
rb   c                   @   s2  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eed#kd$d%d& Zeed#k d'd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Z d:d; Z!d<d= Z"d>d? Z#d@dA Z$dBdC Z%dDdE Z&dFdG Z'dHdI Z(dJdK Z)dLdM Z*dNdO Z+dPdQ Z,dRdS Z-dTdU Z.dVdW Z/dXdY Z0dZd[ Z1d\d] Z2d^d_ Z3d`da Z4dbdc Z5ddde Z6dfdg Z7dhdi Z8djdk Z9dldm Z:dndo Z;dpdq Z<drds Z=dtdu Z>dvdw Z?dxdy Z@dzd{ ZAd|d} ZBd~d 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ل Zpddۄ Zqdd݄ Zrdd߄ Zsdd Ztdd Zudd Zvdd Zwdd Zxdd Zydd Zzdd Z{dd Z|dd Z}dd Z~dd Zdd Zdd Zdd Zeedkdd d ZdS (  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                   @      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   
    rt   c                   @   s   e Zd ZdZdZde ZdS )z!TestEnum.setUp.<locals>.KonstantsgB
@JM!	@r   N)r   r   r   EZPITAUr   r   r   r   	Konstants       ry   c                   @       e Zd ZdZdZdZdZdZdS )zTestEnum.setUp.<locals>.Grades   ro   r   r   r   Nr   r   r   ABCDFr   r   r   r   Grades       r   c                   @   rn   )z#TestEnum.setUp.<locals>.DirectionalZeastZwestZnorthZsouthN)r   r   r   ZEASTWESTZNORTHZSOUTHr   r   r   r   Directional   ru   r   r   )datec                   @   r(   )zTestEnum.setUp.<locals>.Holiday)  r   r   )r   r      N)r   r   r   ZNEW_YEARIDES_OF_MARCHr   r   r   r   Holiday   r,   r   )r   rt   floatry   r   r   strr   datetimer   r   )rJ   rt   ry   r   r   r   r   r   r   r   setUp   s   
zTestEnum.setUpc                 C   s&   | j }| tt|tg d d S )N)	__class__rg   __members__r   rp   rq   rr   rs   )rt   assertEqualsetdirrJ   rt   r   r   r   test_dir_on_class   s
   

zTestEnum.test_dir_on_classc                 C   s(   | j }| tt|jtg d d S )N)r   rg   r   namevalue)rt   r   r   r   rs   r   r   r   r   test_dir_on_item   s
   
zTestEnum.test_dir_on_itemc                 C   sN   G dd dt }| tt|tg d | tt|jtg d d S )Nc                   @      e Zd ZdZdZdd ZdS )z3TestEnum.test_dir_with_added_behavior.<locals>.Testthatthosec                 S   
   d| j  S )NzWowser! I'm %s!r   rJ   r   r   r   wowser   rl   z:TestEnum.test_dir_with_added_behavior.<locals>.Test.wowserN)r   r   r   thistheser   r   r   r   r   Test   rz   r   )r   rg   r   r   r   r   )r   rg   r   r   r   r   )r   r   r   r   r   )rJ   r   r   r   r   test_dir_with_added_behavior   s   


z%TestEnum.test_dir_with_added_behaviorc                 C   sB   G dd dt }G dd d|}| tt|jtg d d S )Nc                   @      e Zd Zdd ZdS )zBTestEnum.test_dir_on_sub_with_behavior_on_super.<locals>.SuperEnumc                 S      dS )Nzdid you see me?r   r   r   r   r   	invisible      zLTestEnum.test_dir_on_sub_with_behavior_on_super.<locals>.SuperEnum.invisibleN)r   r   r   r   r   r   r   r   	SuperEnum       r   c                   @      e Zd ZdZdS )z@TestEnum.test_dir_on_sub_with_behavior_on_super.<locals>.SubEnumr|   Nr   r   r   sampler   r   r   r   SubEnum       r   )r   rg   r   r   r   r   )r   r   r   r   r   rJ   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>   G dd dt }G dd d|}| dhtt|jk d S )Nc                   @   s   e Zd ZdddZdS )zZTestEnum.test_dir_on_sub_with_behavior_including_instance_dict_on_super.<locals>.SuperEnum c                 S      t | |}||_||_|S rc   )int__new___value_description)clsr   r   r=   r   r   r   r         zbTestEnum.test_dir_on_sub_with_behavior_including_instance_dict_on_super.<locals>.SuperEnum.__new__N)r   r   r   r   r   r   r   r   r   r          r   c                   @   r   )zXTestEnum.test_dir_on_sub_with_behavior_including_instance_dict_on_super.<locals>.SubEnumr|   Nr   r   r   r   r   r      r   r   r   )r   rI   r   r   r   r   r   r   r   >test_dir_on_sub_with_behavior_including_instance_dict_on_super   s   zGTestEnum.test_dir_on_sub_with_behavior_including_instance_dict_on_superc                 C   s   | j }| ||j|j d S rc   )rt   assertIsrs   r   r   r   r   test_enum_in_enum_out   s   zTestEnum.test_enum_in_enum_outc                 C   s   | j }| |jjd d S Nr   )rt   r   rp   r   r   r   r   r   test_enum_value      zTestEnum.test_enum_valuec                 C   s   |  tjjd d S )Nr   )r   r!   r   r   r   r   r   r   test_intenum_value      zTestEnum.test_intenum_valuec                 C   s  | j }t|}| t|t| | t|d| | |j|j|j|jg| td	 dD ]O\}}||}| |t
|| | |j| | || | |j| | || | t|| | || | t|d|  | t|d|| q/d S )Nro   zSPRING SUMMER AUTUMN WINTERr   zSeason.z<Season.{0}: {1}>)rt   listr   lenrp   rq   rr   rs   	enumeratesplitgetattrr   assertNotEqualr   assertInr   typeassertIsInstancer   reprformat)rJ   rt   lstiZseasoner   r   r   	test_enum   s,   
zTestEnum.test_enumc                 C   s   | j }| |jjd | |jjd | t d|j_W d    n1 s'w   Y  | t d|j_W d    d S 1 sAw   Y  d S )Nrp   r   Zinviernor   )rt   r   rp   r   r   assertRaisesAttributeErrorr   r   r   r   test_value_name  s   

"zTestEnum.test_value_namec                 C   s<   | j }| t d|_W d    d S 1 sw   Y  d S )Nzreally cold)rt   r   r   rs   r   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    n1 s,w   Y  | t
 |`W d    n1 sCw   Y  | t |j`	W d    d S 1 s\w   Y  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   ro   c                 S      d S rc   r   )r   r   r   r   spam  r   z5TestEnum.test_attribute_deletion.<locals>.Season.spamN)r   r   r   rp   rq   rr   rs   r   r   r   r   r   rt     s    rt   r   )
r   rI   hasattrr   rE   r   r   rp   ZDRYr   r   r   r   r   test_attribute_deletion  s   	"z TestEnum.test_attribute_deletionc                 C   s"   G dd dt }| t| d S )Nc                   @   r$   )z*TestEnum.test_bool_of_class.<locals>.EmptyNr&   r   r   r   r   Empty,  r'   r   r   rI   bool)rJ   r   r   r   r   test_bool_of_class+  s   zTestEnum.test_bool_of_classc                 C   s,   G dd dt }|D ]	}| t| q
d S )Nc                   @   r   )z+TestEnum.test_bool_of_member.<locals>.Countr   r   r   N)r   r   r   Zzeroonetwor   r   r   r   Count1  r    r   r   )rJ   r   memberr   r   r   test_bool_of_member0  s   zTestEnum.test_bool_of_memberc                 C   s(  |  t G dd dt}W d    n1 sw   Y  |  t G dd dt}W d    n1 s5w   Y  |  t G dd dt}W d    n1 sRw   Y  |  t G dd dt}W d    n1 sow   Y  |  t G dd dt}W d    d S 1 sw   Y  d S )Nc                   @   r   *TestEnum.test_invalid_names.<locals>.Wrong	   N)r   r   r   mror   r   r   r   Wrong:  r   r   c                   @   r   )r      N)r   r   r   _create_r   r   r   r   r   =  r   c                   @   r   r   )r   r   r   _get_mixins_r   r   r   r   r   @  r   c                   @   r   )r   r   N)r   r   r   
_find_new_r   r   r   r   r   C  r   c                   @   r   r   )r   r   r   Z
_any_name_r   r   r   r   r   F  r   r   
ValueErrorr   rJ   r   r   r   r   test_invalid_names8  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                   @   r(   )z!TestEnum.test_bool.<locals>.LogicTFNr   r   r   truefalser   r   r   r   LogicK  r,   r   c                   @   r   )z%TestEnum.test_bool.<locals>.RealLogicTFc                 S   
   t | jS rc   )r   r   r   r   r   r   __bool__T  rl   z.TestEnum.test_bool.<locals>.RealLogic.__bool__N)r   r   r   r   r   r   r   r   r   r   	RealLogicQ  rz   r   c                   @   r(   )z$TestEnum.test_bool.<locals>.IntLogicr   r   Nr   r   r   r   r   IntLogicY  r,   r   )r   rI   r   r   rE   r   )rJ   r   r   r   r   r   r   	test_boolI  s   zTestEnum.test_boolr      2__contains__ now returns True/False for all inputsc              	   C   s  | j }| |j| | t! | t d|v  W d    n1 s$w   Y  W d    n1 s3w   Y  | t! | t d|v  W d    n1 sRw   Y  W d    n1 saw   Y  |d}| || G dd dt}| |j	| d S )Nr   rr   c                   @   r(   )z,TestEnum.test_contains_er.<locals>.OtherEnumr   r   Nr   r   r   r   r   r   r   r   r   	OtherEnumo  r   r   )
rt   r   rr   r   	TypeErrorassertWarnsDeprecationWarningr   assertNotInr   rJ   rt   valr   r   r   r   test_contains_er_  s$   

zTestEnum.test_contains_er6__contains__ only works with enum memmbers before 3.12c                 C   sf   | j }| |j| | d|v  | d|v  |d}| || G dd dt}| |j| d S )Nr   rr   c                   @   r(   )z,TestEnum.test_contains_tf.<locals>.OtherEnumr   r   Nr   r   r   r   r   r     r   r   )rt   r   rr   rI   rE   r   r  r   r  r   r   r   test_contains_tfs  s   zTestEnum.test_contains_tfc                 C   s   | j }| t |j|jk  W d    n1 sw   Y  | t |jdk W d    n1 s3w   Y  | |jd G dd dt}| |j|j | t |j|jk  W d    d S 1 sfw   Y  d S )Nro   r   c                   @   r   )z'TestEnum.test_comparisons.<locals>.Partr   r   r   N)r   r   r   rp   CLIPZBARRELr   r   r   r   Part  r    r	  )rt   r   r   rp   rs   r   r   r  )rJ   rt   r	  r   r   r   test_comparisons  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   ro   N)	r   r   r   rp   rq   rr   FALLrs   ANOTHER_SPRINGr   r   r   r   rt     s    rt   r   r   rr   c                 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   r   rp   rq   rr   rs   r   r  r   r   r   items)rJ   rt   r   r   r   r   test_enum_duplicates  s$   zTestEnum.test_enum_duplicatesc                 C   s   |  t G dd dt}W d    n1 sw   Y  |  t G dd dt}W d    n1 s5w   Y  |  t G dd dt}W d    d S 1 sSw   Y  d S )Nc                   @   s   e Zd ZdZdZdZdZdS )+TestEnum.test_duplicate_name.<locals>.Colorr   r   r   ro   Nr   r   r   redgreenbluer   r   r   r   Color  ru   r  c                   @   s    e Zd ZdZdZdZdd ZdS )r  r   r   r   c                 S   r   )Nr  r   r   r   r   r   r    r   /TestEnum.test_duplicate_name.<locals>.Color.redNr  r   r   r   r   r    
    c                   @   s$   e Zd Zedd ZdZdZdZdS )r  c                 S   r   )NZredderr   r   r   r   r   r       r  r   r   r   N)r   r   r   propertyr  r  r  r   r   r   r   r    s    
r   r   r   rJ   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                   @   r(   )z/TestEnum.test_enum_with_value_name.<locals>.Huhr   r   N)r   r   r   r   r   r   r   r   r   Huh  r,   r"  r   r   )r   r   r   r   r   r   r   )rJ   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 N{}{:}{:20}{:^20}{:>20}{:<20})rt   r   r   rp   r   r   r   r   r   test_format_enum  s&   zTestEnum.test_format_enumc                 C   s:   G dd dt }| t|jd | d|jd d S )Nc                   @   s    e Zd Ze Ze Zdd ZdS )z=TestEnum.test_str_override_enum.<locals>.EnumWithStrOverridesc                 S   r   NStr!r   r   r   r   r   __str__  r   zETestEnum.test_str_override_enum.<locals>.EnumWithStrOverrides.__str__N)r   r   r   r	   r   r   r.  r   r   r   r   EnumWithStrOverrides  s    r/  r-  r%  r   r   r   r   r   )rJ   r/  r   r   r   test_str_override_enum  s   zTestEnum.test_str_override_enumc                 C   :   G dd dt }| t|jd | d|jd d S )Nc                   @   r   )zBTestEnum.test_format_override_enum.<locals>.EnumWithFormatOverride      ?       @c                 S   r   )NFormat!!r   rJ   specr   r   r   
__format__  r   zMTestEnum.test_format_override_enum.<locals>.EnumWithFormatOverride.__format__Nr   r   r   r   r   r8  r   r   r   r   EnumWithFormatOverride  rz   r:  zEnumWithFormatOverride.oner%  r5  r0  )rJ   r:  r   r   r   test_format_override_enum  s   z"TestEnum.test_format_override_enumc                 C   r2  )Nc                   @   s(   e Zd Ze Ze Zdd Zdd ZdS )zNTestEnum.test_str_and_format_override_enum.<locals>.EnumWithStrFormatOverridesc                 S   r   r,  r   r   r   r   r   r.    r   zVTestEnum.test_str_and_format_override_enum.<locals>.EnumWithStrFormatOverrides.__str__c                 S   r   NFormat!r   r6  r   r   r   r8    r   zYTestEnum.test_str_and_format_override_enum.<locals>.EnumWithStrFormatOverrides.__format__N)r   r   r   r	   r   r   r.  r8  r   r   r   r   EnumWithStrFormatOverrides  s
    r>  r-  r%  r=  r0  )rJ   r>  r   r   r   !test_str_and_format_override_enum  s   z*TestEnum.test_str_and_format_override_enumc                 C   s<   G dd dt t}| t|jd | d|jd d S )Nc                   @   r   )zBTestEnum.test_str_override_mixin.<locals>.MixinEnumWithStrOverrider3  r4  c                 S   r   )NOverridden!r   r   r   r   r   r.    r   zJTestEnum.test_str_override_mixin.<locals>.MixinEnumWithStrOverride.__str__N)r   r   r   r   r   r.  r   r   r   r   MixinEnumWithStrOverride  rz   rA  r@  r%  r   r   r   r   r   r   )rJ   rA  r   r   r   test_str_override_mixin      z TestEnum.test_str_override_mixinc                 C   <   G dd dt t}| t|jd | d|jd d S )Nc                   @   s$   e Zd ZdZdZdd Zdd ZdS )zPTestEnum.test_str_and_format_override_mixin.<locals>.MixinWithStrFormatOverridesr3  r4  c                 S   r   r,  r   r   r   r   r   r.    r   zXTestEnum.test_str_and_format_override_mixin.<locals>.MixinWithStrFormatOverrides.__str__c                 S   r   r<  r   r6  r   r   r   r8    r   z[TestEnum.test_str_and_format_override_mixin.<locals>.MixinWithStrFormatOverrides.__format__N)r   r   r   r   r   r.  r8  r   r   r   r   MixinWithStrFormatOverrides
  s
    rF  r-  r%  r=  rB  )rJ   rF  r   r   r   "test_str_and_format_override_mixin	  s   z+TestEnum.test_str_and_format_override_mixinc                 C   rE  )Nc                   @   r   )z6TestEnum.test_format_override_mixin.<locals>.TestFloatr3  r4  c                 S   r   )NTestFloat success!r   r6  r   r   r   r8    r   zATestEnum.test_format_override_mixin.<locals>.TestFloat.__format__Nr9  r   r   r   r   	TestFloat  rz   rI  zTestFloat.oner%  rH  rB  )rJ   rI  r   r   r   test_format_override_mixin  rD  z#TestEnum.test_format_override_mixinc                 C   s   |  ||||j d S rc   )r   r   r   )rJ   r7  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 )	Nr%  r&  r'  r(  r)  r*  z{:%Y %m}z{:%Y %m %M:00})r   rK  r   )rJ   r   r   r   r   test_format_enum_date   s   zTestEnum.test_format_enum_datec                 C      | j }| d|j | d|j | d|j | d|j | d|j | d|j | d|j | d|j | d	|j d S )
Nr%  r&  r'  r(  r)  r*  z{:n}z{:5.2}z{:f})ry   rK  rx   )rJ   ry   r   r   r   test_format_enum_float+     zTestEnum.test_format_enum_floatc                 C   rM  )
Nr%  r&  r'  r(  r)  r*  z{:+}z{:08X}z{:b})r   rK  r   )rJ   r   r   r   r   test_format_enum_int7  rO  zTestEnum.test_format_enum_intc                 C   s^   | j }| d|j | d|j | d|j | d|j | d|j | d|j d S r$  )r   rK  r   )rJ   r   r   r   r   test_format_enum_strC  s   zTestEnum.test_format_enum_strc                 C   &   G dd dt }| t|jd d S )Nc                   @   s$   e Zd Zd\ZZZdd ZejZdS )z1TestEnum.test_object_str_override.<locals>.Colorsr   r   r   c                 S   s   d| j f S )Nztest.%s)_name_r   r   r   r   __repr__O     z:TestEnum.test_object_str_override.<locals>.Colors.__repr__N)	r   r   r   REDGREENBLUErU  objectr.  r   r   r   r   ColorsM  s    

r[  ztest.RED)r   r   r   rW  )rJ   r[  r   r   r   test_object_str_overrideL  s   z!TestEnum.test_object_str_overridec                 C   s   G dd dt }G dd dt }G dd d|t|}| |jtu  | t|jd | t|jdd G d	d
 d
||}| t|jd | t|jdd d S )Nc                   @   r   )z2TestEnum.test_enum_str_override.<locals>.MyStrEnumc                 S   r   )NMyStrr   r   r   r   r   r.  V  r   z:TestEnum.test_enum_str_override.<locals>.MyStrEnum.__str__Nr   r   r   r.  r   r   r   r   	MyStrEnumU  r   r_  c                   @   r   )z5TestEnum.test_enum_str_override.<locals>.MyMethodEnumc                 S   r   )NzHello!  My name is %sr   r   r   r   r   helloY  rl   z;TestEnum.test_enum_str_override.<locals>.MyMethodEnum.helloNr   r   r   r`  r   r   r   r   MyMethodEnumX  r   rb  c                   @   r(   )z2TestEnum.test_enum_str_override.<locals>.Test1Enumr   r   Nr   r   r   OneZTwor   r   r   r   	Test1Enum[  r,   re  r]  r   c                   @   r(   )z2TestEnum.test_enum_str_override.<locals>.Test2Enumr   r   Nrc  r   r   r   r   	Test2Enumb  r,   rf  )r   r   rI   _member_type_r   r   rd  r   )rJ   r_  rb  re  rf  r   r   r   test_enum_str_overrideT  s   zTestEnum.test_enum_str_overridec                 C   s<  G dd dt }G dd d|tj}| t|jd |t d< |t d< t| j|j t| j| G dd d|}G dd	 d	|tj}| |j	| |t d< |t d	< t| j|j
 t| j| G d
d dt }G dd d|t}| |j	| | |d|j |t d< |t d< t| jt|j t| jt| d S )Nc                   @      e Zd ZdZdd ZdS )z1TestEnum.test_inherited_data_type.<locals>.HexIntHexIntc                 S      t | S rc   hexr   r   r   r   rU  k     z:TestEnum.test_inherited_data_type.<locals>.HexInt.__repr__Nr   r   r   rU  r   r   r   r   rj  i      rj  c                   @      e Zd ZdZdZdZdZdS )z1TestEnum.test_inherited_data_type.<locals>.MyEnumMyEnumr   r   r   N)r   r   r   r~   r   r   r   r   r   r   rr  m  ru   rr  z<MyEnum.A: 0x1>c                   @   s   e Zd ZdZdS )z3TestEnum.test_inherited_data_type.<locals>.SillyIntSillyIntNr&   r   r   r   r   rs  x  s    rs  c                   @   rq  )z6TestEnum.test_inherited_data_type.<locals>.MyOtherEnumMyOtherEnumro   r|      N)r   r   r   r   rw   r   r   r   r   r   rt  {  ru   rt  c                   @   ri  )z4TestEnum.test_inherited_data_type.<locals>.BrokenInt	BrokenIntc                 S   s   t | |S rc   )r   r   r   r   r   r   r   r     rV  z<TestEnum.test_inherited_data_type.<locals>.BrokenInt.__new__Nr   r   r   r   r   rv    rp  rv  c                   @   rq  )z7TestEnum.test_inherited_data_type.<locals>.MyBrokenEnumMyBrokenEnum      r   N)r   r   r   GHIr   r   r   r   rx    ru   rx  ry  )r   rF   r   r   r   r~   globalsr;   r   rg  rw   r{  r>   r   r   r   )rJ   rj  rr  rs  rt  rv  rx  r   r   r   test_inherited_data_typeh  s,   





z!TestEnum.test_inherited_data_typec                 C   s   |  td G dd dttt}W d    n1 sw   Y  G dd dt}G dd dt}|  td G dd d||t}W d    d S 1 sLw   Y  d S )	Nztoo many data typesc                   @   r   z.TestEnum.test_too_many_data_types.<locals>.Huhr   Nr   r   r   rd  r   r   r   r   r"    r   r"  c                   @   r   )z0TestEnum.test_too_many_data_types.<locals>.MyStrc                 S   s   d|  S )Nz	hello, %sr   r   r   r   r   r`    rn  z6TestEnum.test_too_many_data_types.<locals>.MyStr.helloNra  r   r   r   r   r]    r   r]  c                   @   r   )z0TestEnum.test_too_many_data_types.<locals>.MyIntc                 S   rk  rc   rl  r   r   r   r   r     rn  z5TestEnum.test_too_many_data_types.<locals>.MyInt.reprN)r   r   r   r   r   r   r   r   MyInt  r   r  c                   @   r   r  r  r   r   r   r   r"    r   )assertRaisesRegexr   r   r   r   )rJ   r"  r]  r  r   r   r   test_too_many_data_types  s   "z!TestEnum.test_too_many_data_typesc                 C   sH   | j }i }d||j< d||j< d||j< d||j< | ||j d d S )NZ1225Z0315Z0704Z1031)rt   rs   rp   rq   rr   r   )rJ   rt   Zdatesr   r   r   	test_hash  s   



zTestEnum.test_hashc                 C   (   G dd dt t}| |j|jk  d S )Nc                   @      e Zd ZdZde ZdS )z/TestEnum.test_intenum_from_scratch.<locals>.phyr   r   Nr   r   r   pitaur   r   r   r   phy  rp  r  r   r   rI   r  r  rJ   r  r   r   r   test_intenum_from_scratch     z"TestEnum.test_intenum_from_scratchc                 C   8   G dd dt t}G dd d|}| |j|jk  d S )Nc                   @   r$   )z0TestEnum.test_intenum_inherited.<locals>.IntEnumNr&   r   r   r   r   r     r'   r   c                   @   r  )z,TestEnum.test_intenum_inherited.<locals>.phyr   r   Nr  r   r   r   r   r    rp  r  r  )rJ   r   r  r   r   r   test_intenum_inherited     zTestEnum.test_intenum_inheritedc                 C   r  )Nc                   @   r  )z1TestEnum.test_floatenum_from_scratch.<locals>.phyrv   r   Nr  r   r   r   r   r    rp  r  r   r   rI   r  r  r  r   r   r   test_floatenum_from_scratch  r  z$TestEnum.test_floatenum_from_scratchc                 C   r  )Nc                   @   r$   )z4TestEnum.test_floatenum_inherited.<locals>.FloatEnumNr&   r   r   r   r   	FloatEnum  r'   r  c                   @   r  )z.TestEnum.test_floatenum_inherited.<locals>.phyrv   r   Nr  r   r   r   r   r    rp  r  r  )rJ   r  r  r   r   r   test_floatenum_inherited  r  z!TestEnum.test_floatenum_inheritedc                 C   r  )Nc                   @   r(   )z/TestEnum.test_strenum_from_scratch.<locals>.phyPiTauNr  r   r   r   r   r    r,   r  r   r   rI   r  r  r  r   r   r   test_strenum_from_scratch  r  z"TestEnum.test_strenum_from_scratchc                 C   r  )Nc                   @   r$   )z0TestEnum.test_strenum_inherited.<locals>.StrEnumNr&   r   r   r   r   r%     r'   r%   c                   @   r(   )z,TestEnum.test_strenum_inherited.<locals>.phyr  r  Nr  r   r   r   r   r    r,   r  r  )rJ   r%   r  r   r   r   test_strenum_inherited  r  zTestEnum.test_strenum_inheritedc                 C   s0  G dd dt }| g d|j d | dd t|jD g d t|}| t|t| | t|d d	}| }t|d
D ]Q\}}||}| || | t	|| | |j
| | || | ||d
 | | d|  k o}dk n   | t|| | |t	 | |t qDd 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   ro   r|   ru  ry  N)
r   r   r   SUNDAYMONDAYTUESDAY	WEDNESDAYTHURSDAYFRIDAYSATURDAYr   r   r   r   WeekDay  s    r  )rO   bcr  c                 S   s   g | ]}|qS r   r   )r  r   r   r   r   r    s    z)TestEnum.test_intenum.<locals>.<listcomp>)r   r   r   ry  z8SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAYr   r   rz  )r   r   r  r7   r  r   r   r   r   r   r   r   indexrI   r   r   r   r   )rJ   r  r   r:   r   Zweekdayr   r   r   r   test_intenum  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   ro   r|   ru  ry  N)r   r   r   r  r  r  TEUSDAYr  r  r  r  r   r   r   r   r    s    r  r   r  c                 S   r  r   r   r  r   r   r   r    s    
z4TestEnum.test_intenum_duplicates.<locals>.<listcomp>r  )r   r   r  r  r   r   r   r  )rJ   r  r   r   r   test_intenum_duplicates  s   z TestEnum.test_intenum_duplicatesc                 C   sR   |  tddtj | t tdd W d    d S 1 s"w   Y  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   sn   t tjj}| t|tj t tjjd }| t t| W d    d S 1 s0w   Y  d S )Ng{Gz?)	r   rm  r"   r   r   r   fromhexr   r   )rJ   hr   r   r   test_floatenum_fromhex
  s   "zTestEnum.test_floatenum_fromhexc                 C   ,   t ttrtt| jtj t| jt d S rc   )
isinstancer   	Exceptionr;   r   r   r   r   r   r   test_pickle_enum     
zTestEnum.test_pickle_enumc                 C   r  rc   )r  r!   r  r;   r   r   r   r   r   r   test_pickle_int  r  zTestEnum.test_pickle_intc                 C   r  rc   )r  r"   r  r;   r   r   r   r   r   r   test_pickle_float  r  zTestEnum.test_pickle_floatc                 C   r  rc   )r  r0   r  r;   r   Zhimr   r   r   r   test_pickle_enum_function#  r  z"TestEnum.test_pickle_enum_functionc                 C   r  rc   )r  r-   r  r;   r   Zwhor   r   r   r   %test_pickle_enum_function_with_module)  r  z.TestEnum.test_pickle_enum_function_with_modulec                 C   s    t ttrt| tjd d S )Nr2   )r  r1   r  r   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                   @   r(   )zLTestEnum.test_class_nested_enum_and_pickle_protocol_four.<locals>.NestedEnumcommonZrareN)r   r   r   twigsZshinyr   r   r   r   
NestedEnum6  r,   r  z%s.NestedEnum)r   r   r  r   r   r;   r   r  )rJ   r  r   r   r   /test_class_nested_enum_and_pickle_protocol_four4  s   z8TestEnum.test_class_nested_enum_and_pickle_protocol_fourc                 C   s>   G dd dt }tj|_ttD ]}| |j|d qd S )Nc                   @   r(   )z6TestEnum.test_pickle_by_name.<locals>.ReplaceGlobalIntr   r   N)r   r   r   ONETWOr   r   r   r   ReplaceGlobalInt?  r,   r  r  )r   rF   _reduce_ex_by_name__reduce_ex__r7   r   r   r  )rJ   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-butterr.   )
r   r   r~  rF   _make_class_unpicklabler>   r   r   Zdillr   )rJ   r  r   r   r   test_exploding_pickleF  s   

zTestEnum.test_exploding_picklec                 C   s$   G dd dt t}| |jd d S )Nc                   @   r   )z-TestEnum.test_string_enum.<locals>.SkillLevelz'what is the sound of one hand clapping?z#why did the chicken cross the road?knock, knock!N)r   r   r   ZmasterZ
journeyman
apprenticer   r   r   r   
SkillLevelP  r    r  r  )r   r   r   r  )rJ   r  r   r   r   test_string_enumO  s   zTestEnum.test_string_enumc                 C   sL   G dd dt }| |d|j | t|d|j | |d |j d S )Nc                   @   rn   )z-TestEnum.test_getattr_getitem.<locals>.Periodr   r   r   ro   N)r   r   r   morningnoonZeveningnightr   r   r   r   PeriodW  ru   r  r   r  r  )r   r   r  r   r  r  rJ   r  r   r   r   test_getattr_getitemV  s   zTestEnum.test_getattr_getitemc                 C   s   | j }| t|d d S )N__eq__)rt   rI   r   r   r   r   r   test_getattr_dunder`  r   zTestEnum.test_getattr_dunderc                 C   s4   G dd dt }| t||j|j|j|jg d S )Nc                   @   rn   )z-TestEnum.test_iteration_order.<locals>.Seasonr   ro   r   r   N)r   r   r   rq   rs   rr   rp   r   r   r   r   rt   e  ru   rt   )r   r   r   rq   rs   rr   rp   r   r   r   r   test_iteration_orderd  s
   zTestEnum.test_iteration_orderc                 C   s2   |  tt| j| jj| jj| jj| jjg d S rc   )r   r   reversedrt   rs   rr   rq   rp   r   r   r   r   test_reversed_iteration_ordero  s   z&TestEnum.test_reversed_iteration_orderc                 C   s   t dd}t|}| t|t| | t|d| | |j|j|jg| td dD ],\}}||}| t	|j
| | || | |j| | || | t|| q/d S NSummerMonthjune july augustr   r   r   r   r   r   junejulyaugustr   r   r   r   r   r   r   r   r   rJ   r  r   r   monthr   r   r   r   !test_programmatic_function_stringv  s    
z*TestEnum.test_programmatic_function_stringc                 C   s   t dddd}t|}| t|t| | t|d| | |j|j|jg| td dD ],\}}||}| t	|j
| | || | |j| | || | t|| q1d S )Nr  r  
   startr   r  r  r   r   r   ,test_programmatic_function_string_with_start      z5TestEnum.test_programmatic_function_string_with_startc                 C   s   t dg d}t|}| t|t| | t|d| | |j|j|jg| td dD ],\}}||}| t	|j
| | || | |j| | || | t|| q1d S )Nr  r  r  r  r   r  r   r  r  r   r   r   &test_programmatic_function_string_list  r  z/TestEnum.test_programmatic_function_string_listc                 C   s   t dg ddd}t|}| t|t| | t|d| | |j|j|jg| td dD ],\}}||}| t	|j
| | || | |j| | || | t|| q3d S )Nr  r     r  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| td dD ],\}}||}| t	|j
| | || | |j| | || | t|| q/d S Nr  ))r  r   )r  r   )r  r   r   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| td	 dD ],\}}||}| t
|j| | || | |j| | || | t|| q1d S r  )r   r   r   r   r   r  r  r  r   r   r   r   r   r   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| td	 dD ]#\}}||}| || | |j
| | || | t|| q1d S )Nr  r  )r   r   r   r   r   r   r   r   r  r  r  r   r   r   r   r   r   r  r   r   r   test_programmatic_function_type     z(TestEnum.test_programmatic_function_typec                 C   s   t ddtdd}t|}| t|t| | t|d| | |j|j|jg| td	 dD ]#\}}||}| || | |j
| | || | t|| q2d S )Nr  r     )r   r  r   r  r  r   r   r   *test_programmatic_function_type_with_start  s   z3TestEnum.test_programmatic_function_type_with_startc                 C   s   t dd}t|}| t|t| | t|d| | |j|j|jg| td dD ]#\}}||}| || | |j	| | 
|| | t|| q/d S r  r   r   r   r   r  r  r  r   r   r   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| td dD ]#\}}||}| || | |j	| | 
|| | t|| q1d S )Nr  r  (   r  r   r  r  r   r   r   8test_programmatic_function_type_from_subclass_with_start  r  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 )Nr*   r+   )	r  r)   r  r   r+   rI   r   r   r;   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    n1 s w   Y  | td G dd d|t}W d    d S 1 s@w   Y  d S )Nc                   @   r   )z&TestEnum.test_extending.<locals>.Colorr   r   r   Nr  r   r   r   r   r  +  r    r  c                   @   r   )z*TestEnum.test_extending.<locals>.MoreColorro   r|   ru  Nr   r   r   ZcyanmagentaZyellowr   r   r   r   	MoreColor0  r    r  z0EvenMoreColor: cannot extend enumeration 'Color'c                   @   r   )z.TestEnum.test_extending.<locals>.EvenMoreColorry  N)r   r   r   Z
chartrueser   r   r   r   EvenMoreColor5  r   r  )r   r   r   r  r   )rJ   r  r  r  r   r   r   test_extending*  s   "zTestEnum.test_extendingc                 C   s8   G dd dt }| t|j| | |j d d S )Nc                   @   r   )z/TestEnum.test_exclude_methods.<locals>.whateverr   r   c                 S   r   )Nz
no, not %sr   r   r   r   r   really<  rl   z6TestEnum.test_exclude_methods.<locals>.whatever.reallyN)r   r   r   r   r   r  r   r   r   r   whatever9  rz   r  zno, not that)r   ZassertIsNotr   r  r   r   )rJ   r  r   r   r   test_exclude_methods8  s   zTestEnum.test_exclude_methodsc                 C   sB   |  t G dd dtt}W d    d S 1 sw   Y  d S )Nc                   @   r   )z4TestEnum.test_wrong_inheritance_order.<locals>.Wrongzerror before this pointN)r   r   r   ZNotHerer   r   r   r   r   C  r   r   )r   r   r   r   r   r   r   r   test_wrong_inheritance_orderA  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                   @   r   )z2TestEnum.test_intenum_transitivity.<locals>.numberr   r   r   N)r   r   r   r   r   threer   r   r   r   numberG  r    r  c                   @   r   )z2TestEnum.test_intenum_transitivity.<locals>.numeror   r   r   N)r   r   r   unodostresr   r   r   r   numeroK  r    r  )r   r   r   r  r   r  r  r  )rJ   r  r  r   r   r   test_intenum_transitivityF  s
   z"TestEnum.test_intenum_transitivityc                 C   s4   G dd dt }G dd dt }| t||j d S )Nc                   @   r(   )z4TestEnum.test_wrong_enum_in_call.<locals>.Monochromer   r   Nr   r   r   blackwhiter   r   r   r   
MonochromeT  r,   r  c                   @   r(   )z0TestEnum.test_wrong_enum_in_call.<locals>.Genderr   r   Nr   r   r   malefemaler   r   r   r   GenderW  r,   r  )r   r   r   r  rJ   r  r  r   r   r   test_wrong_enum_in_callS     z TestEnum.test_wrong_enum_in_callc                 C   s4   G dd dt }G dd dt}| t||j d S )Nc                   @   r(   )z:TestEnum.test_wrong_enum_in_mixed_call.<locals>.Monochromer   r   Nr  r   r   r   r   r  ]  r,   r  c                   @   r(   )z6TestEnum.test_wrong_enum_in_mixed_call.<locals>.Genderr   r   Nr  r   r   r   r   r  `  r,   r  )r   r   r   r   r  r  r   r   r   test_wrong_enum_in_mixed_call\  r  z&TestEnum.test_wrong_enum_in_mixed_callc                 C   s8   G dd dt }G dd dt }| ||j|j d S )Nc                   @   r(   )z6TestEnum.test_mixed_enum_in_call_1.<locals>.Monochromer   r   Nr  r   r   r   r   r  f  r,   r  c                   @   r(   )z2TestEnum.test_mixed_enum_in_call_1.<locals>.Genderr   r   Nr  r   r   r   r   r  i  r,   r  )r   r   r  r
  r  r   r   r   test_mixed_enum_in_call_1e     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                   @   r(   )z6TestEnum.test_mixed_enum_in_call_2.<locals>.Monochromer   r   Nr  r   r   r   r   r  o  r,   r  c                   @   r(   )z2TestEnum.test_mixed_enum_in_call_2.<locals>.Genderr   r   Nr  r   r   r   r   r  r  r,   r  )r   r   r   r  r	  r  r   r   r   test_mixed_enum_in_call_2n  r  z"TestEnum.test_mixed_enum_in_call_2c                 C   s6   G dd dt }G dd d|}| t|jd d S )Nc                   @   r   )z*TestEnum.test_flufl_enum.<locals>.Fluflnumc                 S   r   rc   )r   r   r   r   r   r   __int__y  rl   z2TestEnum.test_flufl_enum.<locals>.Fluflnum.__int__N)r   r   r   r  r   r   r   r   Fluflnumx  r   r  c                   @   r   )z0TestEnum.test_flufl_enum.<locals>.MailManOptionsr   r   r   N)r   r   r   option1Zoption2Zoption3r   r   r   r   MailManOptions{  r    r  r   )r   r   r   r  )rJ   r  r  r   r   r   test_flufl_enumw  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                   @   r(   )z+TestEnum.test_introspection.<locals>.Numberd      Nr   r   r   r   r   Number  r,   r  c                   @   r   )z+TestEnum.test_introspection.<locals>.StringZsoftZroughZhardN)r   r   r   yarnZropeZwirer   r   r   r   String  r    r   c                   @   r(   )z*TestEnum.test_introspection.<locals>.Plainr
  r   N)r   r   r   vanillar   r   r   r   r   Plain  r,   r"  )
r   r   r   rg  r   r   r   r  r!  rZ  )rJ   r  r   r"  r   r   r   test_introspection  s   zTestEnum.test_introspectionc                 C   sz   G dd dt }| t |d W d    n1 sw   Y  | t |d  W d    d S 1 s6w   Y  d S )Nc                   @   r   )z0TestEnum.test_no_such_enum_member.<locals>.Colorr   r   r   Nr  r   r   r   r   r    r    r  ro   Z
chartreuse)r   r   r   KeyErrorr   r   r   r   test_no_such_enum_member  s   

"z!TestEnum.test_no_such_enum_memberc                 C   rR  )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   r   )Nz!don't you just love shades of %s?r   r   r   r   r   rU    rl   z.TestEnum.test_new_repr.<locals>.Color.__repr__N)r   r   r   r  r  r  rU  r   r   r   r   r    r  r  z#don't you just love shades of blue?)r   r   r   r  r   r   r   r   test_new_repr  s
   zTestEnum.test_new_reprc                 C   s8   G dd dt }G dd dt|}| t|jd d S )Nc                   @   r   )z,TestEnum.test_inherited_repr.<locals>.MyEnumc                 S   r   )NzMy name is %s.r   r   r   r   r   rU    rl   z5TestEnum.test_inherited_repr.<locals>.MyEnum.__repr__Nro  r   r   r   r   rr    r   rr  c                   @   r   )z/TestEnum.test_inherited_repr.<locals>.MyIntEnumr   r   r   N)r   r   r   r   r   Ztheotherr   r   r   r   	MyIntEnum  r    r'  zMy name is that.)r   r   r   r   r   )rJ   rr  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                          e Zd Z fddZ  ZS )z3TestEnum.test_multiple_mixin_mro.<locals>.auto_enumc           	         s   t | }||_t|j}d}|jD ]}|| }|tu r|}n|}|d7 }|||< q| D ]\}}||vr:|||< q.t| | |||S Nr   r   )r   	_cls_namer   _member_namesEllipsisr  superr   )	metaclsr   bases	classdicttempnamesr   r  r  )r   	auto_enumr   r   r     s$   




z;TestEnum.test_multiple_mixin_mro.<locals>.auto_enum.__new__r   r   r   r   __classcell__r   r4  r   r   r4        r4  c                   @   r$   )z:TestEnum.test_multiple_mixin_mro.<locals>.AutoNumberedEnumNr&   r   r   r   r   AutoNumberedEnum  r'   r:  )	metaclassc                   @   r$   )z5TestEnum.test_multiple_mixin_mro.<locals>.AutoIntEnumNr&   r   r   r   r   AutoIntEnum  r'   r<  c                   @      e Zd ZdZdZdZdS )z8TestEnum.test_multiple_mixin_mro.<locals>.TestAutoNumber.r   Nr   r   r   rO   r  r  r   r   r   r   TestAutoNumber  r    r?  c                   @   r=  )z5TestEnum.test_multiple_mixin_mro.<locals>.TestAutoInt.r   Nr>  r   r   r   r   TestAutoInt  r    r@  )r   r   r   )rJ   r:  r<  r?  r@  r   r7  r   test_multiple_mixin_mro  s
   z TestEnum.test_multiple_mixin_mroc                       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                       H   e Zd ZdZdd Zdd Zedd Z dd	 Zd
d Z fddZdS )z:TestEnum.test_subclasses_with_getnewargs.<locals>.NamedIntNamedIntc                 W   B   |}|^}}t |dkrtdtj| g|R  }||_||_|S Nr   z name and value must be specifiedr   r   r   r   _intname_argsr   argsrI  r   rJ   r   r   r   r        zBTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__new__c                 S      | j S rc   rI  r   r   r   r   __getnewargs__     zITestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__getnewargs__c                 S   rM  rc   rH  r   r   r   r   r        zCTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__name__c                 S      d t| j| jt| S Nz{}({!r}, {})r   r   r   r   rU  r   r   r   r   rU       zCTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__repr__c                 S   &   t }|j}|jtu r|| S || S rc   r   r.  __objclass__rZ  rU  rJ   baseZbase_strr   r   r   r.    
   

zBTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__str__c                    >   t | t | }t|  rt| r d| j|j|S |S Nz({0} + {1})r   r  r   r   rJ   otherr2  rD  r   r   __add__     zBTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__add__N)	r   r   r   r   rO  r  rU  r.  rc  r   rb  r   r   rD        	
	rD  c                   @      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   rg     r    rg  NamedInt('(the-x + the-y)', 3)testr|   r   r   r   r   r   r   r   rk  rl  r~  r;   r   rJ   rg  ZNI5r   rb  r   test_subclasses_with_getnewargs     '


z(TestEnum.test_subclasses_with_getnewargsc                    rB  )	Nc                       rC  )z=TestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedIntrD  c                 W   rE  rF  rG  rJ  r   r   r   r     rL  zETestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__new__c                 S   s
   | j i fS rc   rN  r   r   r   r   __getnewargs_ex__  rl   zOTestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__getnewargs_ex__c                 S   rM  rc   rQ  r   r   r   r   r     rR  zFTestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__name__c                 S   rS  rT  rU  r   r   r   r   rU  "  rV  zFTestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__repr__c                 S   rW  rc   rX  rZ  r   r   r   r.  '  r\  zETestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__str__c                    r]  r^  r_  r`  rb  r   r   rc  0  rd  zETestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__add__N)	r   r   r   r   rs  r  rU  r.  rc  r   rb  r   r   rD    re  rD  c                   @   rf  )z8TestEnum.test_subclasses_with_getnewargs_ex.<locals>.NEIrg  rh  ri  Nrj  r   r   r   r   rg  9  r    rg  rm  rn  r|   r   ro  rp  r   rb  r   "test_subclasses_with_getnewargs_ex  rr  z+TestEnum.test_subclasses_with_getnewargs_exc                    rB  )	Nc                       rC  )z6TestEnum.test_subclasses_with_reduce.<locals>.NamedIntrD  c                 W   rE  rF  rG  rJ  r   r   r   r   M  rL  z>TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__new__c                 S      | j | jfS rc   r   rI  r   r   r   r   
__reduce__V  rV  zATestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__reduce__c                 S   rM  rc   rQ  r   r   r   r   r   X  rR  z?TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__name__c                 S   rS  rT  rU  r   r   r   r   rU  [  rV  z?TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__repr__c                 S   rW  rc   rX  rZ  r   r   r   r.  `  r\  z>TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__str__c                    r]  r^  r_  r`  rb  r   r   rc  i  rd  z>TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__add__N)	r   r   r   r   rw  r  rU  r.  rc  r   rb  r   r   rD  K  re  rD  c                   @   rf  )z1TestEnum.test_subclasses_with_reduce.<locals>.NEIrg  rh  ri  Nrj  r   r   r   r   rg  r  r    rg  rm  rn  r|   r   ro  rp  r   rb  r   test_subclasses_with_reduceJ  rr  z$TestEnum.test_subclasses_with_reducec                    rB  )	Nc                       rC  )z9TestEnum.test_subclasses_with_reduce_ex.<locals>.NamedIntrD  c                 W   rE  rF  rG  rJ  r   r   r   r     rL  zATestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__new__c                 S   ru  rc   rv  rJ   r  r   r   r   r    rV  zGTestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__reduce_ex__c                 S   rM  rc   rQ  r   r   r   r   r     rR  zBTestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__name__c                 S   rS  rT  rU  r   r   r   r   rU    rV  zBTestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__repr__c                 S   rW  rc   rX  rZ  r   r   r   r.    r\  zATestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__str__c                    r]  r^  r_  r`  rb  r   r   rc    rd  zATestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__add__N)	r   r   r   r   r  r  rU  r.  rc  r   rb  r   r   rD    re  rD  c                   @   rf  )z4TestEnum.test_subclasses_with_reduce_ex.<locals>.NEIrg  rh  ri  Nrj  r   r   r   r   rg    r    rg  rm  rn  r|   r   ro  rp  r   rb  r   test_subclasses_with_reduce_ex  rr  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                       @   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>.NamedIntrD  c                 W   rE  rF  rG  rJ  r   r   r   r     rL  zPTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__new__c                 S   rM  rc   rQ  r   r   r   r   r     rR  zQTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__name__c                 S   rS  rT  rU  r   r   r   r   rU    rV  zQTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__repr__c                 S   rW  rc   rX  rZ  r   r   r   r.    r\  zPTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__str__c                    r]  r^  r_  r`  rb  r   r   rc    rd  zPTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__add__Nr   r   r   r   r  rU  r.  rc  r   rb  r   r   rD        	
	rD  c                   @   rf  )zCTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NEIrg  rh  ri  Nrj  r   r   r   r   rg    r    rg  rm  rn  r|   r   )r   r   r   r   r   r   rk  rl  r~  r   r>   r   r   r   rp  r   rb  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                       r{  )zSTestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedIntrD  c                 W   rE  rF  rG  rJ  r   r   r   r     rL  z[TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__new__c                 S   rM  rc   rQ  r   r   r   r   r     rR  z\TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__name__c                 S   rS  rT  rU  r   r   r   r   rU     rV  z\TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__repr__c                 S   rW  rc   rX  rZ  r   r   r   r.    r\  z[TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__str__c                    r]  r^  r_  r`  rb  r   r   rc    rd  z[TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__add__Nr|  r   rb  r   r   rD    r}  rD  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>.NEIrg  rh  ri  c                 S   s   t | j| jffS rc   )r   r   rT  ry  r   r   r   r    s   z\TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NEI.__reduce_ex__N)r   r   r   rk  rl  r  r   r   r   r   rg    r  rg  rm  rn  r|   r   )r   r   r   r   r   r   rk  rl  r~  r   r;   rp  r   rb  r   8test_subclasses_without_direct_pickle_support_using_name  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                   @   rq  )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  )  ru   r  r  )tupler   r   r   r  r   r  r   r  r~  r;   )rJ   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   "   t | jd }t| }||_|S r   r   r   rZ  r   r   r   r   r=   r   r   r   r   9     
zQTestEnum.test_duplicate_values_give_unique_enum_items.<locals>.AutoNumber.__new__c                 S   r   rc   r   r   r   r   r   r   r  >  rl   zQTestEnum.test_duplicate_values_give_unique_enum_items.<locals>.AutoNumber.__int__N)r   r   r   r  r  r  r   r  r   r   r   r   
AutoNumber5  s    r  r   r   r   )	r   r   r   r  r  r  r   r   r   )rJ   r  r   r   r   ,test_duplicate_values_give_unique_enum_items4  s   z5TestEnum.test_duplicate_values_give_unique_enum_itemsc                 C   Z   G dd dt }G dd d|}| t||j|j|jg | ttt|g d d S )Nc                   @      e Zd Zdd Zdd ZdS )zBTestEnum.test_inherited_new_from_enhanced_enum.<locals>.AutoNumberc                 S   r  r   r  r  r   r   r   r   J  r  zJTestEnum.test_inherited_new_from_enhanced_enum.<locals>.AutoNumber.__new__c                 S   r   rc   r  r   r   r   r   r  O  rl   zJTestEnum.test_inherited_new_from_enhanced_enum.<locals>.AutoNumber.__int__N)r   r   r   r   r  r   r   r   r   r  I  s    r  c                   @      e Zd ZdZdZdZdS )z=TestEnum.test_inherited_new_from_enhanced_enum.<locals>.Colorr   Nr  r   r   r   r   r  Q  r    r  rS  )r   r   r   r  r  r  mapr   rJ   r  r  r   r   r   %test_inherited_new_from_enhanced_enumH  s   z.TestEnum.test_inherited_new_from_enhanced_enumc                 C   r  )Nc                   @   r   )z?TestEnum.test_inherited_new_from_mixed_enum.<locals>.AutoNumberc                 S   s$   t | jd }t| |}||_|S r   )r   r   r   r   r   r  r   r   r   r   Z  s   zGTestEnum.test_inherited_new_from_mixed_enum.<locals>.AutoNumber.__new__Nr   r   r   r   r   r  Y  r   r  c                   @   r  )z:TestEnum.test_inherited_new_from_mixed_enum.<locals>.Colorr   Nr  r   r   r   r   r  _  r    r  rS  )r   r   r   r  r  r  r  r   r  r   r   r   "test_inherited_new_from_mixed_enumX  s   z+TestEnum.test_inherited_new_from_mixed_enumc                 C   s0   G dd dt }| t|j | |jt d S )Nc                   @   r   )z,TestEnum.test_equality.<locals>.OrdinaryEnumr   N)r   r   r   rO   r   r   r   r   OrdinaryEnumg  r   r  )r   r   r   rO   )rJ   r  r   r   r   test_equalityf  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 u r| j|jkS tS rc   r   r   NotImplementedrJ   ra  r   r   r   __ge__n     z7TestEnum.test_ordered_mixin.<locals>.OrderedEnum.__ge__c                 S   s   | j |j u r| j|jkS tS rc   r  r  r   r   r   __gt__r  r  z7TestEnum.test_ordered_mixin.<locals>.OrderedEnum.__gt__c                 S   s   | j |j u r| j|jkS tS rc   r  r  r   r   r   __le__v  r  z7TestEnum.test_ordered_mixin.<locals>.OrderedEnum.__le__c                 S   s   | j |j u r| j|jk S tS rc   r  r  r   r   r   __lt__z  r  z7TestEnum.test_ordered_mixin.<locals>.OrderedEnum.__lt__N)r   r   r   r  r  r  r  r   r   r   r   OrderedEnumm  s
    r  c                   @   r{   )z*TestEnum.test_ordered_mixin.<locals>.Grader|   ro   r   r   r   Nr}   r   r   r   r   Grade~  r   r  )r   ZassertGreaterr~   r   ZassertLessEqualr   r   Z
assertLessr   ZassertGreaterEqualr   r   )rJ   r  r  r   r   r   test_ordered_mixinl  s   zTestEnum.test_ordered_mixinc                 C   s`   G dd dt }G dd d|}| t G dd d|}W d    d S 1 s)w   Y  d S )Nc                   @   r   )z'TestEnum.test_extending2.<locals>.Shadec                 S   s   t | j d S rc   )printr   r   r   r   r   shade     z-TestEnum.test_extending2.<locals>.Shade.shadeNr   r   r   r  r   r   r   r   Shade  r   r  c                   @   r   )z'TestEnum.test_extending2.<locals>.Colorr   r   r   Nr  r   r   r   r   r    r    r  c                   @   r   )z+TestEnum.test_extending2.<locals>.MoreColorro   r|   ru  Nr  r   r   r   r   r    r    r  )r   r   r   rJ   r  r  r  r   r   r   test_extending2  s
   "zTestEnum.test_extending2c                 C   sF   G dd dt }G dd d|}G dd d|}| |j d d S )Nc                   @   r   )z'TestEnum.test_extending3.<locals>.Shadec                 S   rM  rc   r   r   r   r   r   r    rP  z-TestEnum.test_extending3.<locals>.Shade.shadeNr  r   r   r   r   r    r   r  c                   @   r   )z'TestEnum.test_extending3.<locals>.Colorc                 S   r   )Nz%s hexlified!r  r   r   r   r   rm    rl   z+TestEnum.test_extending3.<locals>.Color.hexN)r   r   r   rm  r   r   r   r   r    r   r  c                   @   r   )z+TestEnum.test_extending3.<locals>.MoreColorro   r|   ru  Nr  r   r   r   r   r    r    r  z5 hexlified!)r   r   r  rm  r  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                   @   r   )z3TestEnum.test_subclass_duplicate_name.<locals>.Basec                 S   r   rc   r   r   r   r   r   rn    r   z8TestEnum.test_subclass_duplicate_name.<locals>.Base.testNr   r   r   rn  r   r   r   r   Base  r   r  c                   @   r   )z3TestEnum.test_subclass_duplicate_name.<locals>.Testr   Nr  r   r   r   r   r     r   r   )r   r   r   rn  rJ   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   r   )Ndynamicr   r   r   r   r   rn    r  z@TestEnum.test_subclass_duplicate_name_dynamic.<locals>.Base.testNr  r   r  r   r   r        r  c                   @   r   )z;TestEnum.test_subclass_duplicate_name_dynamic.<locals>.Testr   Nr  r   r   r   r   r     r   r   r  )typesr  r   r   rn  r  r   r  r   $test_subclass_duplicate_name_dynamic  s   z-TestEnum.test_subclass_duplicate_name_dynamicc                 C   s`   G dd dt }G dd d|}| t G dd d|}W d    d S 1 s)w   Y  d S )Nc                   @   r   )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 rc   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)r   anyr   r   r   )rJ   rK  r   rO   r   r   r   r   ri     s   z8TestEnum.test_no_duplicates.<locals>.UniqueEnum.__init__Nr   r   r   ri   r   r   r   r   
UniqueEnum  r   r  c                   @   r   z*TestEnum.test_no_duplicates.<locals>.Colorr   r   r   Nr  r   r   r   r   r    r    r  c                   @   s   e Zd ZdZdZdZdZdS r  )r   r   r   r  r  r  Zgrener   r   r   r   r    ru   )r   r   r   )rJ   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 rc   massradius)rJ   r  r  r   r   r   ri     s   
z+TestEnum.test_init.<locals>.Planet.__init__c                 S   s   d}|| j  | j| j  S )NgyдW=r  )rJ   r{  r   r   r   surface_gravity  s   z2TestEnum.test_init.<locals>.Planet.surface_gravityN)r   r   r   ZMERCURYZVENUSEARTHZMARSZJUPITERZSATURNZURANUSZNEPTUNEri   r  r  r   r   r   r   Planet  s    r  r   g#@r  )r   r   roundr  r  r   )rJ   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u  | |j	|j
u  d S )Nc                   @   s   e Zd Z	 dd ZdZe ZedD ]Zed dfede < qedD ]Zed	 d
fede < q#edD ]
Zedfede < q4e	Z
eZeZdS )z$TestEnum.test_ignore.<locals>.Periodc                 S   r   rc   )r   r   r   period)r   r   r  r=   r   r   r   r     r   z,TestEnum.test_ignore.<locals>.Period.__new__zPeriod i   r  r  zmonth_%d5   ry  Zweekzweek_%d    Zdayzday_%dN)r   r   r   r   _ignore_varsr  r7   r   day_1ZOneDayZweek_1ZOneWeekmonth_1ZOneMonthr   r   r   r   r    s    r  r  r   )r   r   rE   r   rI   r  r  r  Zday_30Zweek_4Zday_28r  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 t|tdD ]\}}|d7 }| |j|g | 	||g| q%d S )Nc                   @   r   )z6TestEnum.test_nonhash_value.<locals>.AutoNumberInAListc                 S   s$   t | jd g}t| }||_|S r   r  r  r   r   r   r     s   
z>TestEnum.test_nonhash_value.<locals>.AutoNumberInAList.__new__Nr   r   r   r   r   AutoNumberInAList   r   r  c                   @   r  )z1TestEnum.test_nonhash_value.<locals>.ColorInAListr   Nr  r   r   r   r   ColorInAList  r    r  r   r   )
r   r   r   r  r  r  zipr7   r   r   )rJ   r  r  rF   r   r   r   r   test_nonhash_value  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                   @   r   )zHTestEnum.test_conflicting_types_resolved_in_new.<locals>.LabelledIntEnumc                 W   s$   |\}}t | |}||_||_|S rc   )r   r   labelr   )r   rK  r   r  r=   r   r   r   r     s
   zPTestEnum.test_conflicting_types_resolved_in_new.<locals>.LabelledIntEnum.__new__Nr   r   r   r   r   LabelledIntEnum  r   r  c                   @   r(   )zETestEnum.test_conflicting_types_resolved_in_new.<locals>.LabelledList)r   ZUnprocessed)r   zPayment CompleteN)r   r   r   unprocessedpayment_completer   r   r   r   LabelledList  r,   r  r   )r   r   r   r   r  r  )rJ   r  r  r   r   r   &test_conflicting_types_resolved_in_new  s
   z/TestEnum.test_conflicting_types_resolved_in_newc                 C   `   G dd dt }| t||j|j|jg | |jjd | |jjd | |jjd d S )Nc                   @      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  "      
r  r   r   r   r   r   r   r  r  r  r   r   r   r   r   test_auto_number!  
   zTestEnum.test_auto_numberc                 C   r  )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 rc   r   r   r  countlastr   r   r   _generate_next_value_.  r   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  r   r   r   r   test_auto_name,  s
   zTestEnum.test_auto_namec                 C   sp   G dd dt }G dd d|}| t||j|j|jg | |jjd | |jjd | |jjd d S )Nc                   @   r   )z5TestEnum.test_auto_name_inherit.<locals>.AutoNameEnumc                 S   r  rc   r   r  r   r   r   r  ;  r   zKTestEnum.test_auto_name_inherit.<locals>.AutoNameEnum._generate_next_value_N)r   r   r   r  r   r   r   r   AutoNameEnum:  r   r  c                   @   r  )z.TestEnum.test_auto_name_inherit.<locals>.ColorNr  r   r   r   r   r  =  r  r  r  r  r  r  )rJ   r  r  r   r   r   test_auto_name_inherit9  s   zTestEnum.test_auto_name_inheritc                 C   s$   G dd dt }| |jjd d S )Nc                   @      e Zd ZdZe ZdS )z)TestEnum.test_auto_garbage.<locals>.Colorr  Nr   r   r   r  r	   r  r   r   r   r   r  H      
r  r   )r   r   r  r   r   r   r   r   test_auto_garbageG  s   zTestEnum.test_auto_garbagec                 C   r  )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  N  s    
r  r  r   r   r  r   r   r   r   test_auto_garbage_correctedM  r  z$TestEnum.test_auto_garbage_correctedc                 C   s@   |  t G dd dt}W d    d S 1 sw   Y  d S )Nc                   @   s&   e Zd Ze Ze Ze Zdd ZdS )z'TestEnum.test_auto_order.<locals>.Colorc                 S   r  rc   r   r  r   r   r   r  ^  r   z=TestEnum.test_auto_order.<locals>.Color._generate_next_value_N)r   r   r   r	   r  r  r  r  r   r   r   r   r  Z  s
    r  r  r   r   r   r   test_auto_orderX  s   "zTestEnum.test_auto_orderc                    s\   t   d _G  fdddt}| t||j|jg | |jjd | |jjd d S )Nzpathological casec                       s   e Zd Z Zdd Ze ZdS )z-TestEnum.test_auto_order_wierd.<locals>.Colorc                 S   r  rc   r   r  r   r   r   r  f  r   zCTestEnum.test_auto_order_wierd.<locals>.Color._generate_next_value_N)r   r   r   r  r  r	   r  r   Z
weird_autor   r   r  d  s    
r  r  )r	   r   r   r   r   r  r  r   r   r  r   test_auto_order_wierda  s   zTestEnum.test_auto_order_wierdc                 C   0   G dd dt }| |j|j|jgt| d S )Nc                   @   "   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  Zprimeror  r  r   r   r   r   Dupesn      

r  r   r   r  r  r  r   rJ   r  r   r   r   test_duplicate_autom      zTestEnum.test_duplicate_autoc              
   C   sZ   G dd dt }z	|d W td ty, } z| |jd u  W Y d }~d S d }~ww )Nc                   @   r   )z,TestEnum.test_default_missing.<locals>.Colorr   r   r   N)r   r   r   rW  rX  rY  r   r   r   r   r  u  r    r  ry  Exception not raised.)r   r   rI   __context__r  rJ   r  excr   r   r   test_default_missingt  s   
zTestEnum.test_default_missingc              
   C   s   G dd dt }| |d|j z	|d W td ty4 } z| |jd u  W Y d }~nd }~ww z	|d W td tyY } z| t|jt W Y d }~nd }~ww z	|d W td t	y } z| t|jt W Y d }~d S d }~ww )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   s*   |dkr| j S |dkrdS |dkrtd S )Nr  
bad returnr|   	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  r  ry  r  r  r  )
r   r   r  r   rI   r  r  r   r  r  r  r   r   r   test_missing  s.   


 zTestEnum.test_missingc                    sr   dd l }G dd dtj G dd d}G  fddd}|| }|| }| | d  | | d  d S )Nr   c                   @   r(   )z8TestEnum.test_missing_exceptions_reset.<locals>.TestEnumZval1Zval2N)r   r   r   ZVAL1ZVAL2r   r   r   r   rm     r,   rm   c                   @   r   )z6TestEnum.test_missing_exceptions_reset.<locals>.Class1c                 S   s   zt   t y   Y d S w rc   r   r   r   r   r   ri     s
   z?TestEnum.test_missing_exceptions_reset.<locals>.Class1.__init__Nr  r   r   r   r   Class1  r   r  c                       s   e Zd Z fddZdS )z6TestEnum.test_missing_exceptions_reset.<locals>.Class2c                    s$   z d W d S  t y   Y d S w )NZinvalid_valuer  r   rm   r   r   ri     s
   z?TestEnum.test_missing_exceptions_reset.<locals>.Class2.__init__Nr  r   r  r   r   Class2  s    r  )weakrefrF   r   refr   )rJ   r  r  r  Zclass_1_refZclass_2_refr   r  r   test_missing_exceptions_reset  s   z&TestEnum.test_missing_exceptions_resetc                 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                   @      e Zd Zedd ZdS )z.TestEnum.test_multiple_mixin.<locals>.MaxMixinc                 S   s   t | }|| _|S rc   )r   MAX)r   maxr   r   r   r
    s   z2TestEnum.test_multiple_mixin.<locals>.MaxMixin.MAXN)r   r   r   rb   r
  r   r   r   r   MaxMixin  r  r  c                   @   r   )z.TestEnum.test_multiple_mixin.<locals>.StrMixinc                 S   
   | j  S rc   rT  lowerr   r   r   r   r.    rl   z6TestEnum.test_multiple_mixin.<locals>.StrMixin.__str__Nr^  r   r   r   r   StrMixin  r   r  c                   @   r   )z.TestEnum.test_multiple_mixin.<locals>.SomeEnumc                 S   r   )Nbooyahr   r   r   r   r   behavior  r   z7TestEnum.test_multiple_mixin.<locals>.SomeEnum.behaviorN)r   r   r   r  r   r   r   r   SomeEnum  r   r  c                   @   r  )z1TestEnum.test_multiple_mixin.<locals>.AnotherEnumc                 S   r   )Nnuhuh!r   r   r   r   r   r    r   z:TestEnum.test_multiple_mixin.<locals>.AnotherEnum.behaviorc                 S   r   )N
what's up?r   r   r   r   r   social  r   z8TestEnum.test_multiple_mixin.<locals>.AnotherEnum.socialN)r   r   r   r  r  r   r   r   r   AnotherEnum  s    r  c                   @   r  z+TestEnum.test_multiple_mixin.<locals>.ColorNr   r   r   r	   rW  rX  rY  r   r   r   r   r    r  r  r   r   r   
Color.BLUEc                   @   r  r  r  r   r   r   r   r    r  r  c                   @   r  r  r  r   r   r   r   r    r  c                   @   r  )z/TestEnum.test_multiple_mixin.<locals>.CoolColorNr  r   r   r   r   	CoolColor  r  r  r  c                   @   r  )z1TestEnum.test_multiple_mixin.<locals>.CoolerColorNr  r   r   r   r   CoolerColor  r  r  r  r  c                   @   r  )z2TestEnum.test_multiple_mixin.<locals>.CoolestColorNr  r   r   r   r   CoolestColor  r  r  c                   @   r  )z3TestEnum.test_multiple_mixin.<locals>.ConfusedColorNr  r   r   r   r   ConfusedColor  r  r  c                   @   r  )z3TestEnum.test_multiple_mixin.<locals>.ReformedColorNr  r   r   r   r   ReformedColor  r  r  )r   r   rW  r   rX  rY  r
  r   r  r  r   rI   
issubclassr   )rJ   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                   @   r   )z7TestEnum.test_multiple_inherited_mixin.<locals>.StrEnumc                 _   sB   |D ]}t |tstd|t|jf qtj| g|R i |S )Nz%Enumeration '%s' (%s) is not a string)r  r   r   r   r   r   )r   rK  kwargsrO   r   r   r   r   '  s   
z?TestEnum.test_multiple_inherited_mixin.<locals>.StrEnum.__new__Nr   r   r   r   r   r%   &  r   r%   c                   @   r   )z9TestEnum.test_multiple_inherited_mixin.<locals>.Decision1REVERT
REVERT_ALLRETRYNr   r   r   r#  r$  r%  r   r   r   r   	Decision1-      r'  c                   @   r$   )z6TestEnum.test_multiple_inherited_mixin.<locals>.MyEnumNr&   r   r   r   r   rr  2  r'   rr  c                   @   r   )z9TestEnum.test_multiple_inherited_mixin.<locals>.Decision2r#  r$  r%  Nr&  r   r   r   r   	Decision24  r(  r)  )r   r   r   )rJ   r%   r'  rr  r)  r   r   r   test_multiple_inherited_mixin%  s   z&TestEnum.test_multiple_inherited_mixinc                 C   s   G dd dt }G dd d}G dd d||tj}G dd d|}| t|j| | t|jd	 G d
d d|}| |jd d S )Nc                       s   e Zd Z fddZ  ZS )z5TestEnum.test_multiple_mixin_inherited.<locals>.MyIntc                    s   t  | |S rc   )r.  r   rw  r8  r   r   r   <  r  z=TestEnum.test_multiple_mixin_inherited.<locals>.MyInt.__new__r5  r   r   r8  r   r  ;  s    r  c                   @   r   )z8TestEnum.test_multiple_mixin_inherited.<locals>.HexMixinc                 S   rk  rc   rl  r   r   r   r   rU  @  rn  zATestEnum.test_multiple_mixin_inherited.<locals>.HexMixin.__repr__Nro  r   r   r   r   HexMixin?  r   r+  c                   @   r$   )z9TestEnum.test_multiple_mixin_inherited.<locals>.MyIntEnumNr&   r   r   r   r   r'  C  r'   r'  c                   @   r   )z3TestEnum.test_multiple_mixin_inherited.<locals>.Foor   N)r   r   r   TESTr   r   r   r   FooF  r   r-  Z0x1c                   @   s   e Zd ZdZdd ZdS )z3TestEnum.test_multiple_mixin_inherited.<locals>.Feer   c                 S   s   |d7 }t | |}||_|S r   )r   r   r   )r   r   r   r   r   r   r   M  s   z;TestEnum.test_multiple_mixin_inherited.<locals>.Fee.__new__N)r   r   r   r,  r   r   r   r   r   FeeK  rp  r.  r   )r   rF   r   rI   r  r,  r   r   )rJ   r  r+  r'  r-  r.  r   r   r   test_multiple_mixin_inherited:  s   z&TestEnum.test_multiple_mixin_inheritedc                 C   s(   d}t |dd}i }i }t||| d S )Nz8from enum import Enum; Enum('Animal', 'ANT BEE CAT DOG')z<string>exec)compiler0  )rJ   codeZ	global_nsZlocal_lsr   r   r   test_empty_globalsT  s
   zTestEnum.test_empty_globalsr   r   z+private variables are now normal attributesc                 C   s   |  t G dd dt}W d    n1 sw   Y  | |jjd z"|  t G dd dt}W d    W d S 1 s@w   Y  W d S  tyQ   Y d S w )Nc                   @   r   )<TestEnum.test_warning_for_private_variables.<locals>.PrivateRadarN)r   r   r   _Private__corporalr   r   r   r   Privatec  r   r8  r6  c                   @   r   )r5  ZHoolihanN)r   r   r   Z_Private__major_r   r   r   r   r8  h  r   )r   r  r   r   r7  r   r   )rJ   r8  r   r   r   "test_warning_for_private_variables]  s   &z+TestEnum.test_warning_for_private_variablesN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   unittestskipIfpython_versionr  r  r
  r  r!  r#  r+  r1  r;  r?  rC  rG  rJ  rK  rL  rN  rP  rQ  r\  rh  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%  r&  r(  rA  rq  rt  rx  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r*  r/  r3  
skipUnlessr9  r   r   r   r   rm      s   #	


				.		
	
					


%999957
	% `	rm   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      G dd dt }d S )Nc                   @   rn   )z*TestOrder.test_same_members.<locals>.Colorred green bluer   r   r   Nr   r   r   _order_r  r  r  r   r   r   r   r  q  ru   r  r   r   r   r   r   test_same_membersp  r   zTestOrder.test_same_membersc                 C   r?  )Nc                   @       e Zd ZdZdZdZdZeZdS )z7TestOrder.test_same_members_with_aliases.<locals>.Colorr@  r   r   r   Nr   r   r   rB  r  r  r  verder   r   r   r   r  x  r   r  rC  r   r   r   r   test_same_members_with_aliasesw  r   z(TestOrder.test_same_members_with_aliasesc                 C   B   |  td G dd dt}W d    d S 1 sw   Y  d S )N#member order does not match _order_c                   @   rn   )z6TestOrder.test_same_members_wrong_order.<locals>.Colorr@  r   r   r   N)r   r   r   rB  r  r  r  r   r   r   r   r    ru   r  r  r   r   r   r   r   r   test_same_members_wrong_order     "z'TestOrder.test_same_members_wrong_orderc                 C   rI  )NrJ  c                   @   rn   )z5TestOrder.test_order_has_extra_members.<locals>.Colorred green blue purpler   r   r   NrA  r   r   r   r   r    ru   r  rK  r   r   r   r   test_order_has_extra_members  rM  z&TestOrder.test_order_has_extra_membersc                 C   rI  )NrJ  c                   @   rE  )zBTestOrder.test_order_has_extra_members_with_aliases.<locals>.ColorrN  r   r   r   NrF  r   r   r   r   r    r   r  rK  r   r   r   r   )test_order_has_extra_members_with_aliases  rM  z3TestOrder.test_order_has_extra_members_with_aliasesc                 C   rI  )NrJ  c                   @   r{   )z4TestOrder.test_enum_has_extra_members.<locals>.Colorr@  r   r   r   ro   N)r   r   r   rB  r  r  r  purpler   r   r   r   r    r   r  rK  r   r   r   r   test_enum_has_extra_members  rM  z%TestOrder.test_enum_has_extra_membersc                 C   rI  )NrJ  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>.Colorr@  r   r   r   ro   N)	r   r   r   rB  r  r  r  rQ  rG  r   r   r   r   r    s    r  rK  r   r   r   r   (test_enum_has_extra_members_with_aliases  rM  z2TestOrder.test_enum_has_extra_members_with_aliasesN)
r   r   r   rD  rH  rL  rO  rP  rR  rS  r   r   r   r   r>  n  s    		r>  c                   @   s,  e 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eed#kd$d%d& Zeed#k d'd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Z e!j"d8d9 Z#d:d; Z$d<S )=TestFlagc                   @   s   e Zd Zd\ZZZdS )zTestFlag.Perm)ro   r   r   N)r   r   r   RWXr   r   r   r   Perm  r   rX  c                   @   r{   )zTestFlag.Openr   r   r   r      Nr   r   r   ROWORWACCEr   r   r   r   Open  r   r`  c                   @   $   e Zd ZdZdZdZdZeeB ZdS )zTestFlag.Colorr   r   r   ro   Nr   r   r   BLACKrW  rX  rY  ZPURPLEr   r   r   r   r        r  c                 C     | j }| t|jd | t|jd | t|jd | t|j|jB d | t|j|jB |jB d | t|dd | t|j d | t|j d	 | t|j d | t|j|jB  d | t|j|jB |jB  d | t|d
d | j}| t|jd | t|jd | t|j	d | t|j|j
B d | t|j|j
B d | t|j d | t|j d | t|j	 d | t|j|j
B  d | t|j|j
B  d d S )NPerm.RPerm.WPerm.XPerm.R|W
Perm.R|W|Xr   Perm.0Perm.W|XPerm.R|XOpen.ROOpen.WOOpen.ACOpen.CE
Open.CE|WOOpen.CE|AC|RW|WO
Open.CE|RWOpen.RWrX  r   r   rU  rV  rW  r`  r[  r\  r^  r_  rJ   rX  r`  r   r   r   test_str  0    zTestFlag.test_strc                 C   re  )N<Perm.R: 4><Perm.W: 2><Perm.X: 1><Perm.R|W: 6><Perm.R|W|X: 7>r   <Perm.0: 0>z<Perm.W|X: 3>z<Perm.R|X: 5>rn  <Open.RO: 0><Open.WO: 1><Open.AC: 3><Open.CE: 524288><Open.CE|WO: 524289>z<Open.CE|AC|RW|WO: 524291>z<Open.CE|RW: 524290>z<Open.RW: 2>rX  r   r   rU  rV  rW  r`  r[  r\  r^  r_  rx  r   r   r   	test_repr  rz  zTestFlag.test_reprc                 C   8   | j }| t|jdd | t|j|jB dd d S )Nr   rf  rm  rX  r   r   rU  rW  rJ   rX  r   r   r   test_format     zTestFlag.test_formatc                 C   s   | j }|D ],}|D ]'}| ||B ||j|jB  | ||B j|j|jB  | t||B | q	q|D ]
}| ||B | q4| j}| |j|jB |j d S rc   rX  r   r   r   r   r`  r[  r_  rJ   rX  r   jr`  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 }|D ]}|D ]}| ||@ j|j|j@  | t||@ | q1q-|D ]}| ||@ | | ||@ | | ||@ | qN| j	}	| |	j
|	j@ |	j
 d S Nr   )rX  rU  rV  rW  r   r   r   r   r   r`  r[  r_  
rJ   rX  r]  RXWXRWXvaluesr   r  r`  r   r   r   test_and	  s"   zTestFlag.test_andc                 C   s   | j }|D ]}|D ]}| ||A j|j|jA  | t||A | q	q|D ]}| ||dA | | |d|A | q&| j}| |j|jA |j | |j|jA |j d S r  r  r  r   r   r   test_xor	  s   zTestFlag.test_xorc           	      C   s   | j }|j|jB }|j|jB }|j|jB }|j|jB |jB }t||||||dg }|D ]}| t| | | |  | q-|D ]
}| |  | qC| j}| |j	|j	 @ |j
 | |j	|jB |j	 @ |j d S r  )rX  rU  rV  rW  r   r   r   r   r`  r\  r[  r_  	rJ   rX  r]  r  r  r  r  r   r`  r   r   r   test_invert&	  s   "zTestFlag.test_invertc                 C   D   | j }|D ]}| | q| j}|D ]}| t|jt| qd S rc   rX  rI   r`  r   r   r   rJ   rX  fr`  r   r   r   r   6	     zTestFlag.test_boolc                 C   s   t dd}t|}| t|t| | t|d| | ||j|j|jg td D ]1\}}d|> }||}| |j	| | t
|j	t | |j| | || | t
|| q.d S NrX  R W Xr   r   r   r   r   r   rU  rV  rW  r   r   r   r   r   r   r   r   rJ   rX  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 td D ]1\}}d|> }||}| |j	| | t
|j	t | |j| | || | t
|| q0d S NrX  r  rz  r  r   r  r  r   r   r   +test_programatic_function_string_with_startM	     z4TestFlag.test_programatic_function_string_with_startc                 C   s   t dg d}t|}| t|t| | t|d| | ||j|j|jg td D ]1\}}d|> }||}| |j	| | t
|j	t | |j| | || | t
|| q0d S NrX  )rU  rV  rW  r   r  r   r  r  r   r   r   %test_programatic_function_string_list\	  r  z.TestFlag.test_programatic_function_string_listc                 C   s   t dd}t|}| t|t| | t|d| | ||j|j|jg td D ]5\}}dd| d > }||}| |j	| | t
|j	t | |j| | || | t
|| q.d S NrX  ))rU  r   )rV  rz  )rW  r  r   r  r   r   r  r  r   r   r   "test_programatic_function_iterablek	  s   
z+TestFlag.test_programatic_function_iterablec                 C   s   t dtd}t|}| t|t| | t|d| | ||j|j|jg td	 D ]5\}}dd| d > }||}| |j
| | t|j
t | |j| | || | t|| q0d S r  )r   r   r   r   r   rU  rV  rW  r   r   r   r   r   r   r   r   r  r   r   r   #test_programatic_function_from_dictz	  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 rc   )r  r#   r  r;   r   r   r   r   r   r   r   test_pickle	  s   
zTestFlag.test_pickler   r   c              	   C   s  | j }| j}| |j|v  | |j|v  | t! | t d|v  W d    n1 s0w   Y  W d    n1 s?w   Y  | t! | t d|v  W d    n1 s^w   Y  W d    n1 smw   Y  | t! | t d|v  W d    n1 sw   Y  W d    n1 sw   Y  | t* | t d|v  W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S Nrc  r[  r   )	r`  r  rE   rc  r[  r   r   r   r  rJ   r`  r  r   r   r   r  	  s:   



"zTestFlag.test_contains_err  c                 C   sh   | j }| j}| |j|v  | |j|v  | d|v  | d|v  | d|v  | d|v  d S r  )r`  r  rE   rc  r[  rI   r  r   r   r   r  	  s   zTestFlag.test_contains_tfc           	      C   s   | j }|\}}}||B }||B }||B }||B |B }| ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  d S rc   )rX  rI   rE   	rJ   rX  rU  rV  rW  r]  r  r  r  r   r   r   test_member_contains	  s$   
zTestFlag.test_member_containsc                 C   r  )Nc                   @   r  )z(TestFlag.test_auto_number.<locals>.ColorNr  r   r   r   r   r  	  r  r  r   r   ro   )r   r   r   r  r  r  r   r   r   r   r   r  	  r  zTestFlag.test_auto_numberc                 C   rI  )Nz Invalid Flag value: .not an int.c                   @   r  )z0TestFlag.test_auto_number_garbage.<locals>.Colorz
not an intNr  r   r   r   r   r  	  r  r  )r  r   r   r   r   r   r   test_auto_number_garbage	  rM  z!TestFlag.test_auto_number_garbagec                 C   s   G dd dt }d}| td| |d | td| |d | td| |d | td| |d | td| |d	 | td| |d	 d S )
Nc                   @   r   )0TestFlag.test_cascading_failure.<locals>.Bizarrer   ro   ru  N)r   r   r   r  dr  r   r   r   r   Bizarre	  r    r  r  z5 is not a valid r|   z2 is not a valid r   z1 is not a valid r   )r   r  r   )rJ   r  r   r   r   r   test_cascading_failure	  s   zTestFlag.test_cascading_failurec                 C   r  )Nc                   @   r  )z+TestFlag.test_duplicate_auto.<locals>.DupesNr  r   r   r   r   r  	  r  r  r  r  r   r   r   r  	  r  zTestFlag.test_duplicate_autoc                 C   s(   G dd dt }| t|dd d S )Nc                   @   r   )z&TestFlag.test_bizarre.<locals>.Bizarrer   ro   ru  N)r   r   r   r  r  r  r   r   r   r   r  	  r    r  ry  z<Bizarre.d|c|b: 7>)r   r   r   )rJ   r  r   r   r   test_bizarre	  s   zTestFlag.test_bizarrec                 C   P  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                   @   r	  )z.TestFlag.test_multiple_mixin.<locals>.AllMixinc                 S   <   t | }d }|r|d }|dd  D ]}||O }q|| _|S r*  r   ALLr   membersZ	all_valuer   r   r   r   r  	     
z2TestFlag.test_multiple_mixin.<locals>.AllMixin.ALLNr   r   r   rb   r  r   r   r   r   AllMixin	  r  r  c                   @   r   )z.TestFlag.test_multiple_mixin.<locals>.StrMixinc                 S   r  rc   r  r   r   r   r   r.  
  rl   z6TestFlag.test_multiple_mixin.<locals>.StrMixin.__str__Nr^  r   r   r   r   r  
  r   r  c                   @   r  z+TestFlag.test_multiple_mixin.<locals>.ColorNr  r   r   r   r   r  
  r  r  r   r   ro   ry  r  c                   @   r  r  r  r   r   r   r   r  
  r  r  c                   @   r  r  r  r   r   r   r   r  
  r  )r   r   rW  r   rX  rY  r  r   rJ   r  r  r  r   r   r   r!  	  (   zTestFlag.test_multiple_mixinc                       G dd dt  t d fddfddtdD }t| W d    n1 s0w   Y  | d	 | d
td d S )Nc                   @   L   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      | |u S rc   r   r  r   r   r   r  ,
  rn  z7TestFlag.test_unique_composite.<locals>.TestFlag.__eq__c                 S   r   rc   hashr   r   r   r   r   __hash__.
  rl   z9TestFlag.test_unique_composite.<locals>.TestFlag.__hash__Nr   r   r   r	   r   r   r  ZfourZfiveZsixZsevenZeightr  r  r   r   r   r   rT  #
      rT  Fc                     <   zt dD ]	}  |  qW d S  ty   dY d S w N   Tr7   addr  r   rT  failedseenr   r   
cycle_enum3
     
z2TestFlag.test_unique_composite.<locals>.cycle_enumc                       g | ]}t j d qS )r:   	threadingThreadr  rW   r  r   r   r  :
      
z2TestFlag.test_unique_composite.<locals>.<listcomp>rz  ;at least one thread failed while creating composite membersr  "too many composite members created)r   r   r7   r   start_threadsrE   r   r   rJ   threadsr   rT  r  r  r  r   test_unique_composite 
     
zTestFlag.test_unique_compositec                    s:  G fdddt }G  fddd| G dd d }G dd d|} jd	 d |jd	 d |jd
 d |jd	d |jd
d G dd d|}G dd d|}G dd d|}|jd	 d |jd	d |jd
 d |jd	d |jd
d d S )Nc                       r)  )z+TestFlag.test_init_subclass.<locals>.MyEnumc                    s0   t  jdi | | jdd d| _d S )N_testFrr  r   )r.  __init_subclass__rE   __dict__get_test1r   kwds)r   rJ   r   r   r  H
  s   
z=TestFlag.test_init_subclass.<locals>.MyEnum.__init_subclass__r   r   r   r  r6  r   r   r8  r   rr  G
  r9  rr  c                       s   e Zd Z fddZ  ZS )z.TestFlag.test_init_subclass.<locals>.TheirEnumc                    s    t  | jdi | d| _d S )N	TheirEnumr   )r.  r  _test2r  )r  r   r   r   r  N
  s   
z@TestFlag.test_init_subclass.<locals>.TheirEnum.__init_subclass__r  r   )r  r8  r   r  M
  r9  r  c                   @   r   )z.TestFlag.test_init_subclass.<locals>.WhoseEnumc                 [   r   rc   r   r  r   r   r   r  R
  r   z@TestFlag.test_init_subclass.<locals>.WhoseEnum.__init_subclass__Nr   r   r   r  r   r   r   r   	WhoseEnumQ
  r   r  c                   @   r   )z+TestFlag.test_init_subclass.<locals>.NoEnumr   Nr   r   r   r  r   r   r   r   NoEnumT
  r   r  r  r  Fc                   @   r   )z,TestFlag.test_init_subclass.<locals>.OurEnumc                 [   s
   d| _ d S )NOurEnum)r  r  r   r   r   r  ]
  rl   z>TestFlag.test_init_subclass.<locals>.OurEnum.__init_subclass__Nr  r   r   r   r   r  \
  r   r  c                   @   r   )z.TestFlag.test_init_subclass.<locals>.WhereEnumc                 [   r   rc   r   r  r   r   r   r  `
  r   z@TestFlag.test_init_subclass.<locals>.WhereEnum.__init_subclass__Nr  r   r   r   r   	WhereEnum_
  r   r  c                   @   r   )z.TestFlag.test_init_subclass.<locals>.NeverEnumr   Nr  r   r   r   r   	NeverEnumb
  r   r  )r   r   r  rE   r  )rJ   rr  r  r  r  r  r  r   )r  rJ   r   test_init_subclassF
  s"   zTestFlag.test_init_subclassN)%r   r   r   r   rX  r`  r  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   reap_threadsr  r  r   r   r   r   rT    sN    

+
%rT  c                   @   s  e 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eed%kd&d'd( Zeed%k d)d*d+ Zd,d- Zd.d/ Zd0d1 Zejd2d3 Z d4S )5TestIntFlagc                   @   r   )zTestIntFlag.Permr   r   ro   N)r   r   r   rW  rV  rU  r   r   r   r   rX  n
  r    rX  c                   @   r{   )zTestIntFlag.Openr   r   r   r   rY  NrZ  r   r   r   r   r`  s
  r   r`  c                   @   ra  )zTestIntFlag.Colorr   r   r   ro   Nrb  r   r   r   r   r  z
  rd  r  c                 C   s   | j }| |jtu  | j}|D ]}| t|| | ||j q| t|j|j	B | | |j|j	B d |D ]}| t|| | ||j q:| t|j
|jB | | |j
|jB d d S )Nr   )rX  rI   rg  r   r`  r  r   r   rV  rW  r\  r]  )rJ   rX  r`  r  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 )Nrf  rg  rh  ri  rj  rz  zPerm.8|Rr   rk  zPerm.8rl  rm  zPerm.-8rn  ro  rp  rq  rr  rs  ro   zOpen.4rt  ru  zOpen.AC|RW|WOrv  rw  rx  r   r   r   ry  
  <    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 )#Nr{  r|  r}  r~  r  rz  z<Perm.8|R: 12>r   r  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>rn  z<Perm.R|W|X: -1>r  z<Perm.R|W|X: -9>r  r  r  r  r  ro   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>r  z<Open.CE|AC|RW|WO: -5>r  rx  r   r   r   r  
  r  zTestIntFlag.test_reprc                 C   r  )Nr   45r  r  r   r   r   r  
  r  zTestIntFlag.test_formatc                 C   sL  | j }|D ]s}|D ]%}| ||B |j|jB  | ||B j|j|jB  | t||B | q	tdD ]D}| ||B |j|B  | ||B j|j|B  | t||B | | ||B ||jB  | ||B j||jB  | t||B | q3q|D ]}| ||B | | |dB | | d|B | q{| j}| |j|jB |j d S Nrz  r   	rX  r   r   r   r   r7   r`  r[  r_  r  r   r   r   r  
  s(   zTestIntFlag.test_orc           
   	   C   s  | j }|j|jB }|j|jB }|j|jB }|j|jB |jB }t||||||dg }|D ]}|D ]4}| ||@ |j|j@ d||f  | ||@ j|j|j@ d||f  | t||@ |d||f  q1t	dD ]D}| ||@ |j|@  | ||@ j|j|@  | t||@ | | ||@ ||j@  | ||@ j||j@  | t||@ | qjq-|D ]}| ||@ | | |d@ | | d|@ | q| j
}	| |	j|	j@ |	j d S )Nr   zi is %r, j is %rrz  ry  )rX  rU  rV  rW  r   r   r   r   r   r7   r`  r[  r_  r  r   r   r   r  
  s2   "$ zTestIntFlag.test_andc                 C   sR  | j }|D ]s}|D ]%}| ||A |j|jA  | ||A j|j|jA  | t||A | q	tdD ]D}| ||A |j|A  | ||A j|j|A  | t||A | | ||A ||jA  | ||A j||jA  | t||A | q3q|D ]}| |dA | | d|A | q{| j}| |j|jA |j | |j|jA |j d S r  r  r  r   r   r   r    s(   zTestIntFlag.test_xorc           	      C   s  | j }|j|jB }|j|jB }|j|jB }|j|jB |jB }t||||||dg }|D ]&}| | |j  | | j|j  | t| | | |  | q-|D ]
}| |  | qV| j	}| |j
|j
 @ |j | |j
|jB |j
 @ |j d S r  )rX  rU  rV  rW  r   r   r   r   r   r`  r\  r[  r_  r  r   r   r   r    s    "zTestIntFlag.test_invertc                 C   s   t dd}t|}| t|t| | t|d| | ||j|j|jg td D ]7\}}d|> }||}| |j	| | t
|j	t | || | |j| | || | t
|| q.d S r  r   r   r   r   rU  rV  rW  r   r   r   r   r   r   r   r   r  r   r   r   r  .  s   
z,TestIntFlag.test_programatic_function_stringc                 C   s   t dddd}t|}| t|t| | t|d| | ||j|j|jg td D ]7\}}d|> }||}| |j	| | t
|j	t | || | |j| | || | t
|| q0d S r  r  r  r   r   r   r  >     z7TestIntFlag.test_programatic_function_string_with_startc                 C   s   t dg d}t|}| t|t| | t|d| | ||j|j|jg td D ]7\}}d|> }||}| |j	| | t
|j	t | || | |j| | || | t
|| q0d S r  r  r  r   r   r   r  N  r  z1TestIntFlag.test_programatic_function_string_listc                 C   s   t dd}t|}| t|t| | t|d| | ||j|j|jg td D ];\}}dd| d > }||}| |j	| | t
|j	t | || | |j| | || | t
|| q.d S r  r  r  r   r   r   r  ^  s   
z.TestIntFlag.test_programatic_function_iterablec                 C   s   t dtd}t|}| t|t| | t|d| | ||j|j|jg td	 D ];\}}dd| d > }||}| |j
| | t|j
t | || | |j| | || | t|| q0d S r  )r   r   r   r   r   rU  rV  rW  r   r   r   r   r   r   r   r   r  r   r   r   r  n  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 )NrX  r   ThingrF   r   r   r   r   r   rJ   rX  r   r  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 )NrX  r   r   r  r  r  r   r   r   *test_programatic_function_from_empty_tuple  s   z6TestIntFlag.test_programatic_function_from_empty_tupler   r   c              	   C   s  | j }| j}| |j|v  | |j|v  | |j|v  | |j|v  | t! | t	 d|v  W d    n1 s@w   Y  W d    n1 sOw   Y  | t! | t	 d|v  W d    n1 snw   Y  W d    n1 s}w   Y  | t! | t	 d|v  W d    n1 sw   Y  W d    n1 sw   Y  | t* | t	 d|v  W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S NrX  r]  r   )
r`  r  rI   rX  r]  rE   r   r   r   r  r  r   r   r   r    s>   



"zTestIntFlag.test_contains_err  c                 C   s   | j }| j}| |j|v  | |j|v  | |j|v  | |j|v  | d|v  | d|v  | d|v  | d|v  d S r  )r`  r  rI   rX  r]  rE   r  r   r   r   r    s   zTestIntFlag.test_contains_tfc           	      C   s  | j }|\}}}||B }||B }||B }||B |B }| ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | t | d|v  W d    d S 1 sw   Y  d S )Nrn  )rX  rI   rE   r   r   r  r   r   r   r    s*   
"z TestIntFlag.test_member_containsc                 C   r  rc   r  r  r   r   r   r     r  zTestIntFlag.test_boolc                 C   r  )Nc                   @   r	  )z1TestIntFlag.test_multiple_mixin.<locals>.AllMixinc                 S   r  r*  r  r  r   r   r   r    r  z5TestIntFlag.test_multiple_mixin.<locals>.AllMixin.ALLNr  r   r   r   r   r    r  r  c                   @   r   )z1TestIntFlag.test_multiple_mixin.<locals>.StrMixinc                 S   r  rc   r  r   r   r   r   r.    rl   z9TestIntFlag.test_multiple_mixin.<locals>.StrMixin.__str__Nr^  r   r   r   r   r    r   r  c                   @   r  z.TestIntFlag.test_multiple_mixin.<locals>.ColorNr  r   r   r   r   r    r  r  r   r   ro   ry  r  c                   @   r  r  r  r   r   r   r   r    r  r  c                   @   r  r  r  r   r   r   r   r    r  )r   r   rW  r   rX  rY  r  r   r  r   r   r   r!    r  zTestIntFlag.test_multiple_mixinc                    r  )Nc                   @   r  )z3TestIntFlag.test_unique_composite.<locals>.TestFlagc                 S   r  rc   r   r  r   r   r   r    rn  z:TestIntFlag.test_unique_composite.<locals>.TestFlag.__eq__c                 S   r   rc   r  r   r   r   r   r    rl   z<TestIntFlag.test_unique_composite.<locals>.TestFlag.__hash__Nr  r   r   r   r   rT    r  rT  Fc                     r  r  r  r  r  r   r   r    r  z5TestIntFlag.test_unique_composite.<locals>.cycle_enumc                    r  r  r  r  r  r   r   r    r  z5TestIntFlag.test_unique_composite.<locals>.<listcomp>rz  r  r  r  )r   r   r7   r   r  rE   r   r   r  r   r  r   r    r  z!TestIntFlag.test_unique_compositeN)!r   r   r   r   rX  r`  r  r  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  k
  sF    !!	

+r  c                   @   r?   )TestEmptyAndNonLatinStringsc                 C   s:   |  t tdd}W d    d S 1 sw   Y  d S )N	empty_abc)r   r   r   r   )rJ   r  r   r   r   test_empty_string-  s   "z-TestEmptyAndNonLatinStrings.test_empty_stringc                 C   &   t dd}t|d}| |jd d S )N	greek_abc)   αr   r   r  r   r   r   r   r   )rJ   r  r  r   r   r   test_non_latin_character_string1     

z;TestEmptyAndNonLatinStrings.test_non_latin_character_stringc                 C   r  )N
hebrew_123)   א23r  r   r  )rJ   r  r  r   r   r   test_non_latin_number_string6  r  z8TestEmptyAndNonLatinStrings.test_non_latin_number_stringN)r   r   r   r  r  r  r   r   r   r   r  +  s    r  c                   @   r?   )
TestUniquec                 C   ,   t G dd dt}t G dd dt}d S )Nc                   @   r   )z+TestUnique.test_unique_clean.<locals>.Cleanr   r  g      @Nr   r   r   r   r   r  r   r   r   r   Clean?  r(  r  c                   @   r   )z-TestUnique.test_unique_clean.<locals>.Cleanerr   r   r   N)r   r   r   singledoubletripler   r   r   r   CleanerD  r(  r"  r   r   r   )rJ   r  r"  r   r   r   test_unique_clean>     zTestUnique.test_unique_cleanc                 C   s   |  td tG dd dt}W d    n1 sw   Y  |  td tG dd dt}W d    d S 1 s<w   Y  d S )Nz	tres.*onec                   @   r=  )z+TestUnique.test_unique_dirty.<locals>.Dirtyr   r  Nr  r   r   r   r   DirtyL  r(  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   DirtierU  
    r'  )r  r   r   r   r   )rJ   r&  r'  r   r   r   test_unique_dirtyJ  s   "zTestUnique.test_unique_dirtyc                 C   r  )Nc                   @   r   )z/TestUnique.test_unique_with_name.<locals>.Sillyr   r  r   N)r   r   r   r   r   r   r   r   r   r   Silly]  r(  r*  c                   @   rn   )z1TestUnique.test_unique_with_name.<locals>.Sillierr   r   r   ro   N)r   r   r   r  r   r!  r   r   r   r   r   Sillierb  r(  r+  r#  )rJ   r*  r+  r   r   r   test_unique_with_name\  r%  z TestUnique.test_unique_with_nameN)r   r   r   r$  r)  r,  r   r   r   r   r  <  s    r  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.
 |  
 |  ----------------------------------------------------------------------
 |  Readonly properties 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                   @   r   )zTestStdLib.Colorr   r   r   Nr  r   r   r   r   r    r    r  c                 C   sT   t jd u r
tt }ntt }t }tj|d}|| j |	 
 }| || d S )N)output)r%   rg   !expected_help_output_without_docsr   expected_help_output_with_docsr
   pydocZHelperr  getvaluestripr   )rJ   Zexpected_textr.  helperresultr   r   r   
test_pydoc  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
}| D ] }|| || krct  tdd||| || df dd d}qC|rm| d d S d S )Nr   )rg   An enumeration.r   r   r  r  r   r  r   Fz.
%s
     key: %s
  result: %s
expected: %s
%s
K===========================================================================r   sepT/result does not equal expected, see print above)dictr   r  r   r   r  r  r   r  r  inspectZ
getmembersr   keysr  fail)rJ   r  r5  r  r  r   r   r   test_inspect_getmembers  s6   



z"TestStdLib.test_inspect_getmembersc                 C   s4  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}t||D ]\}}||krtdd||df dd d}qx|r| d d S d S )Nr   )	Attributer   data)r   kindZdefining_classrZ  rg   r7  r   r  r   r  r  r  r   r   c                 S   rM  rc   r   r  r   r   r   <lambda>      z>TestStdLib.test_inspect_classify_class_attrs.<locals>.<lambda>)keyc                 S   rM  rc   r   rD  r   r   r   rE    rF  Fz
%s
%s
%s
%s
r8  r   r9  Tr;  )r=  rA  rZ  r   r  r   r   r  r  r  r   r  sortr   Zclassify_class_attrsr  r  r?  )rJ   rA  r  r5  r  r  rr   r   r   !test_inspect_classify_class_attrs  sR   




z,TestStdLib.test_inspect_classify_class_attrs)	r   r   r   ZmaxDiffr   r  r6  r@  rJ  r   r   r   r   r-    s    r-  c                   @   r   )MiscTestCasec                 C   s   t | t d S rc   )r   rF   r   r   r   r   test__all__  r  zMiscTestCase.test__all__N)r   r   r   rL  r   r   r   r   rK    r   rK  r|   c                   @   sL   e Zd Zdd Zdd Zeedkddd Zeed	kd
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__rP  c                 S   
   |  dS NZCONVERT_TEST_
startswithrk  r   r   r   rE       
 zGTestIntEnumConvert.test_convert_value_lookup_priority.<locals>.<lambda>filterr|   CONVERT_TEST_NAME_A)rF   r   	_convert_r   r   r   rJ   r  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 )NrN  rO  rP  c                 S   rQ  rR  rS  rU  r   r   r   rE    rV  z1TestIntEnumConvert.test_convert.<locals>.<lambda>rW  r|   c                 S   s    g | ]}|d d dvr|qS )r   r   )ZCOrX   r   )r  r   r   r   r   r  '  s    z3TestIntEnumConvert.test_convert.<locals>.<listcomp>z&Names other than CONVERT_TEST_* found.)msg)rF   r   rZ  r   r   CONVERT_TEST_NAME_FrY  CONVERT_TEST_NAME_BCONVERT_TEST_NAME_CCONVERT_TEST_NAME_DCONVERT_TEST_NAME_Er   r[  r   r   r   test_convert  s   

zTestIntEnumConvert.test_convert)r   rz  z_convert was deprecated in 3.8c                 C   N   |  t tjjddtdk dd d W d    d S 1 s w   Y  d S )NrN  rO  rP  c                 S   rQ  rR  rS  rU  r   r   r   rE  2  rV  z6TestIntEnumConvert.test_convert_warn.<locals>.<lambda>rW  )r   r  rF   r   _convertr   r   r   r   r   test_convert_warn+     
"z$TestIntEnumConvert.test_convert_warnr4  z_convert was removed in 3.9c                 C   rd  )NrN  rO  rP  c                 S   rQ  rR  rS  rU  r   r   r   rE  ;  rV  z7TestIntEnumConvert.test_convert_raise.<locals>.<lambda>rW  )r   r   rF   r   re  r   r   r   r   r   test_convert_raise4  rg  z%TestIntEnumConvert.test_convert_raiseN)
r   r   r   r\  rc  r:  r=  r<  rf  rh  r   r   r   r   rM    s    



rM  c                   @   s8   e Zd ZdZdZdZdZdZdd Zdd	 Z	d
d Z
dS )r@   )Z_bad_Z_good_Z	_what_ho_)Z__mal__Z__bien__Z__que_que__)Z_MyEnum__privateZ_MyEnum__still_private)Z_MyEnum__private_Z_MyEnum__also_private_)ZokayZ_semi_privateZ_weird__Z	_MyEnum__c                 C   sZ   | j | j D ]}| t|d|  q| j| j | j D ]}| t|d|  qd S )Nz%r is a not sunder name?z%r is a sunder name?)	sunder_namesprivate_and_sunder_namesrI   rF   r\   dunder_namesprivate_namesrandom_namesrE   rJ   r   r   r   r   test_sunderE  s
   zTestHelpers.test_sunderc                 C   sZ   | j D ]}| t|d|  q| j| j | j | j D ]}| t|d|  qd S )Nz%r is a not dunder name?z%r is a dunder name?)	rk  rI   rF   r`   ri  rl  rj  rm  rE   rn  r   r   r   test_dunderK  s
   
zTestHelpers.test_dunderc                 C   sV   | j | j D ]}| td|d q| j| j | j D ]}| td|d qd S )Nrr  z%r is a not private name?z%r is a private name?)	rl  rj  rI   rF   _is_privateri  rk  rm  rE   rn  r   r   r   test_is_privateQ  s
   zTestHelpers.test_is_privateN)r   r   r   ri  rk  rl  rj  rm  ro  rp  rr  r   r   r   r   r@   =  s    rP  rc   )ErF   r=  r1  sysr:  r  collectionsr   r   r   r   r   r   r   r	   ior
   pickler   r   r   r   Ztest.supportr   r   r   r   r   version_infor<  r   r  r  r   r!   r   r"   r#   r   r%   r)   r   r-   r0   r1   r4   r;   r>   ZTestCaser@   rb   rm   r>  rT  r  r  r  r0  r/  r-  rK  ra  r`  r_  rY  rb  r^  rM  mainr   r   r   r   <module>   s    $
               r>   B   C/'P.
