o
    g                 
   @   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 z
G dd	 d	eZW n eyp 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y3 Z zeZ)W Y dZ[ndZ[ww z	eddddZ*W n eyR Z zeZ*W Y dZ[ndZ[ww z
G dd deZ+W n
 eyg   Y nw d=dd Z,d!d" Z-G d#d$ d$ej.Z/G d%d& d&Z0G d'd( d(ej.Z1G d)d* d*ej.Z2G d+d, d,ej.Z3G d-d. d.ej.Z4G d/d0 d0ej.Z5G d1d2 d2ej.Z6d3Z7d4Z8G d5d6 d6ej.Z9G d7d8 d8ej.Z:d9Z;d9Z<d9Z=d9Z>d9Z?d9Z@G d:d; d;ej.ZAe'd<kreB  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)	timedeltac                   @      e Zd ZdZdZdZdS )Stooges         N__name__
__module____qualname__ZLARRYCURLYMOE r   r   D/Users/admin/.pyenv/versions/3.10.0/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ZdS )StrEnumzaccepts only string valuesN)r   r   r   __doc__r   r   r   r   r%   2       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)   4       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   K   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_loadR   s
   r;   c              	   C   sJ   t td D ]}| | t||d W d    q1 sw   Y  qd S r5   )r7   r   r   )r8   	exceptionobjr6   r   r   r   test_pickle_exceptionX   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                   @      e Zd ZdS )z+TestHelpers.test_is_descriptor.<locals>.fooNr   r   r   r   r   r   r   fooa       rC   )__get____set__
__delete__r   )assertFalseenum_is_descriptorsetattr
assertTrue)selfrC   attrr=   r   r   r   test_is_descriptor`   s   zTestHelpers.test_is_descriptorc                 C   8   dD ]
}|  t| qdD ]
}| t| qd S )N)_a_Z_aa_)aa__a__aa____a___a____a________________)rL   rI   
_is_sunderrH   rM   sr   r   r   test_is_sunderi   s
   zTestHelpers.test_is_sunderc                 C   rP   )N)rW   Z__aa__)rR   rS   rT   rU   rV   rQ   rX   rY   rZ   r[   r\   r]   r^   )rL   rI   
_is_dunderrH   r`   r   r   r   test_is_dunderq   s
   zTestHelpers.test_is_dunderN)r   r   r   rO   rb   rd   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fdelr&   )rM   rg   rh   ri   docr   r   r   __init__|   s   
zclassproperty.__init__c                 C   s
   |  |S rf   )rg   )rM   instance
ownerclassr   r   r   rE         
zclassproperty.__get__)NNNN)r   r   r   rk   rE   r   r   r   r   re   z   s    
re   c                   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-dWdX Z.dYdZ Z/d[d\ Z0d]d^ Z1d_d` Z2dadb Z3dcdd Z4dedf Z5dgdh Z6didj Z7dkdl Z8dmdn Z9dodp Z:dqdr Z;dsdt Z<dudv Z=dwdx Z>dydz Z?d{d| Z@d}d~ ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd ZcddĄ ZdddƄ ZeddȄ Zfddʄ Zgdd̄ Zhdd΄ ZiddЄ Zjdd҄ ZkddԄ Zlddք Zmdd؄ Znddڄ Zodd܄ Zpddބ Zqdd Zrdd Zsdd Ztdd Zudd Zvdd Zwdd Zxdd Zydd Zzdd Z{dd Z|dd Z}e~ejdd dkddd ZdS )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   
    rv   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       r{   c                   @       e Zd ZdZdZdZdZdZdS )zTestEnum.setUp.<locals>.Grades   rq   r   r   r   Nr   r   r   ABCDFr   r   r   r   Grades       r   c                   @   rp   )z#TestEnum.setUp.<locals>.DirectionalZeastZwestZnorthZsouthN)r   r   r   ZEASTWESTZNORTHZSOUTHr   r   r   r   Directional   rw   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   rv   floatr{   r   r   strr   datetimer   r   )rM   rv   r{   r   r   r   r   r   r   r   setUp   s   
zTestEnum.setUpc                 C   s&   | j }| tt|tg d d S )N)	__class__r&   __members__r   rr   rs   rt   ru   )rv   assertEqualsetdirrM   rv   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   r&   r   namevalue)rv   r   r   r   ru   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   rM   r   r   r   wowser   rn   z:TestEnum.test_dir_with_added_behavior.<locals>.Test.wowserN)r   r   r   thistheser   r   r   r   r   Test   r|   r   )r   r&   r   r   r   r   )r   r&   r   r   r   r   )r   r   r   r   r   )rM   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                   @   r$   )z@TestEnum.test_dir_on_sub_with_behavior_on_super.<locals>.SubEnumr~   Nr   r   r   sampler   r   r   r   SubEnum   r'   r   )r   r&   r   r   r   r   )r   r   r   r   r   rM   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 rf   )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   rL   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 rf   )rv   assertIsru   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   )rv   r   rr   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 )Nrq   zSPRING SUMMER AUTUMN WINTERr   zSeason.z<Season.{0}: {1}>)rv   listr   lenrr   rs   rt   ru   	enumeratesplitgetattrr   assertNotEqualr   assertInr   typeassertIsInstancer   reprformat)rM   rv   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 )Nrr   r   Zinviernor   )rv   r   rr   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)rv   r   r   ru   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   rq   c                 S      d S rf   r   )r   r   r   r   spam  r   z5TestEnum.test_attribute_deletion.<locals>.Season.spamN)r   r   r   rr   rs   rt   ru   r   r   r   r   r   rv     s    rv   r   )
r   rL   hasattrr   rH   r   r   rr   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                   @   rA   )z*TestEnum.test_bool_of_class.<locals>.EmptyNrB   r   r   r   r   Empty+  rD   r   r   rL   bool)rM   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   Count0  r    r   r   )rM   r   memberr   r   r   test_bool_of_member/  s   zTestEnum.test_bool_of_memberc                 C   s(  |  t G dd dt}W d    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   Wrong9  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   B  r'   c                   @   r$   r   )r   r   r   Z
_any_name_r   r   r   r   r   E  r'   r   
ValueErrorr   rM   r   r   r   r   test_invalid_names7  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   LogicJ  r,   r   c                   @   r   )z%TestEnum.test_bool.<locals>.RealLogicTFc                 S   
   t | jS rf   )r   r   r   r   r   r   __bool__S  rn   z.TestEnum.test_bool.<locals>.RealLogic.__bool__N)r   r   r   r   r   r   r   r   r   r   	RealLogicP  r|   r   c                   @   r(   )z$TestEnum.test_bool.<locals>.IntLogicr   r   Nr   r   r   r   r   IntLogicX  r,   r   )r   rL   r   r   rH   r   )rM   r   r   r   r   r   r   	test_boolH  s   zTestEnum.test_boolc                 C   s   | j }| |j| | t d|v  W d    n1 sw   Y  | t d|v  W d    n1 s7w   Y  |d}| || G dd dt}| |j| d S )Nr   rt   c                   @   r(   )z)TestEnum.test_contains.<locals>.OtherEnumr   r   Nr   r   r   r   r   r   r   r   r   	OtherEnumi  r   r   )rv   r   rt   r   	TypeErrorr   ZassertNotInr   )rM   rv   valr   r   r   r   test_contains^  s   

zTestEnum.test_containsc                 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 )Nrq   r   c                   @   r   )z'TestEnum.test_comparisons.<locals>.Partr   r   r   N)r   r   r   rr   CLIPZBARRELr   r   r   r   Partv  r    r   )rv   r   r   rr   ru   r   r   r   )rM   rv   r   r   r   r   test_comparisonsm  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   rq   N)	r   r   r   rr   rs   rt   FALLru   ANOTHER_SPRINGr   r   r   r   rv     s    rv   r   r   rt   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   rr   rs   rt   ru   r   r  r   r   r   items)rM   rv   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   rq   Nr   r   r   redgreenbluer   r   r   r   Color  rw   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   rM   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   )rM   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})rv   r   r   rr   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   )rM   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   rM   specr   r   r   
__format__  r   zMTestEnum.test_format_override_enum.<locals>.EnumWithFormatOverride.__format__Nr   r   r   r   r   r/  r   r   r   r   EnumWithFormatOverride  r|   r1  zEnumWithFormatOverride.oner  r,  r'  )rM   r1  r   r   r   test_format_override_enum  s   z"TestEnum.test_format_override_enumc                 C   r)  )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   r-  r   r   r   r/    r   zYTestEnum.test_str_and_format_override_enum.<locals>.EnumWithStrFormatOverrides.__format__N)r   r   r   r	   r   r   r%  r/  r   r   r   r   EnumWithStrFormatOverrides  s
    r5  r$  r  r4  r'  )rM   r5  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>.MixinEnumWithStrOverrider*  r+  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  r|   r8  r7  r  r   r   r   r   r   r   )rM   r8  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>.MixinWithStrFormatOverridesr*  r+  c                 S   r   r#  r   r   r   r   r   r%    r   zXTestEnum.test_str_and_format_override_mixin.<locals>.MixinWithStrFormatOverrides.__str__c                 S   r   r3  r   r-  r   r   r   r/    r   z[TestEnum.test_str_and_format_override_mixin.<locals>.MixinWithStrFormatOverrides.__format__N)r   r   r   r   r   r%  r/  r   r   r   r   MixinWithStrFormatOverrides  s
    r=  r$  r  r4  r9  )rM   r=  r   r   r   "test_str_and_format_override_mixin  s   z+TestEnum.test_str_and_format_override_mixinc                 C   r<  )Nc                   @   r   )z6TestEnum.test_format_override_mixin.<locals>.TestFloatr*  r+  c                 S   r   )NTestFloat success!r   r-  r   r   r   r/    r   zATestEnum.test_format_override_mixin.<locals>.TestFloat.__format__Nr0  r   r   r   r   	TestFloat  r|   r@  zTestFloat.oner  r?  r9  )rM   r@  r   r   r   test_format_override_mixin  r;  z#TestEnum.test_format_override_mixinc                 C   s   |  ||||j d S rf   )r   r   r   )rM   r.  r   r   r   r   assertFormatIsValue  s   zTestEnum.assertFormatIsValuec                 C   sz   | j }| d|j | d|j | d|j | d|j | d|j | d|j | d|j | d|j d S )	Nr  r  r  r  r   r!  z{:%Y %m}z{:%Y %m %M:00})r   rB  r   )rM   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})r{   rB  rz   )rM   r{   r   r   r   test_format_enum_float     zTestEnum.test_format_enum_floatc                 C   rD  )
Nr  r  r  r  r   r!  z{:+}z{:08X}z{:b})r   rB  r   )rM   r   r   r   r   test_format_enum_int!  rF  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   rB  r   )rM   r   r   r   r   test_format_enum_str-  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__9     z:TestEnum.test_object_str_override.<locals>.Colors.__repr__N)	r   r   r   REDGREENBLUErL  objectr%  r   r   r   r   Colors7  s    

rR  ztest.RED)r   r   r   rN  )rM   rR  r   r   r   test_object_str_override6  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%  @  r   z:TestEnum.test_enum_str_override.<locals>.MyStrEnum.__str__Nr   r   r   r%  r   r   r   r   	MyStrEnum?  r   rV  c                   @   r   )z5TestEnum.test_enum_str_override.<locals>.MyMethodEnumc                 S   r   )NzHello!  My name is %sr   r   r   r   r   helloC  rn   z;TestEnum.test_enum_str_override.<locals>.MyMethodEnum.helloNr   r   r   rW  r   r   r   r   MyMethodEnumB  r   rY  c                   @   r(   )z2TestEnum.test_enum_str_override.<locals>.Test1Enumr   r   Nr   r   r   OneZTwor   r   r   r   	Test1EnumE  r,   r\  rT  r   c                   @   r(   )z2TestEnum.test_enum_str_override.<locals>.Test2Enumr   r   NrZ  r   r   r   r   	Test2EnumL  r,   r]  )r   r   rL   _member_type_r   r   r[  r   )rM   rV  rY  r\  r]  r   r   r   test_enum_str_override>  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 rf   hexr   r   r   r   rL  U     z:TestEnum.test_inherited_data_type.<locals>.HexInt.__repr__Nr   r   r   rL  r   r   r   r   ra  S      ra  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   ri  W  rw   ri  z<MyEnum.A: 0x1>c                   @   s   e Zd ZdZdS )z3TestEnum.test_inherited_data_type.<locals>.SillyIntSillyIntNrB   r   r   r   r   rj  b  s    rj  c                   @   rh  )z6TestEnum.test_inherited_data_type.<locals>.MyOtherEnumMyOtherEnumrq   r~      N)r   r   r   r   ry   r   r   r   r   r   rk  e  rw   rk  c                   @   r`  )z4TestEnum.test_inherited_data_type.<locals>.BrokenInt	BrokenIntc                 S   s   t | |S rf   )r   r   r   r   r   r   r   r   r  rM  z<TestEnum.test_inherited_data_type.<locals>.BrokenInt.__new__Nr   r   r   r   r   rm  p  rg  rm  c                   @   rh  )z7TestEnum.test_inherited_data_type.<locals>.MyBrokenEnumMyBrokenEnum      r   N)r   r   r   GHIr   r   r   r   ro  t  rw   ro  rp  )r   rI   r   r   r   r   globalsr;   r   r^  ry   rr  r>   r   r   r   )rM   ra  ri  rj  rk  rm  ro  r   r   r   test_inherited_data_typeR  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   r[  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   rW    re  z6TestEnum.test_too_many_data_types.<locals>.MyStr.helloNrX  r   r   r   r   rT    r   rT  c                   @   r   )z0TestEnum.test_too_many_data_types.<locals>.MyIntc                 S   rb  rf   rc  r   r   r   r   r     re  z5TestEnum.test_too_many_data_types.<locals>.MyInt.reprN)r   r   r   r   r   r   r   r   MyInt  r   ry  c                   @   r$   rw  rx  r   r   r   r   r    r'   )assertRaisesRegexr   r   r   r   )rM   r  rT  ry  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)rv   ru   rr   rs   rt   r   )rM   rv   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  rg  r  r   r   rL   r  r  rM   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                   @   rA   )z0TestEnum.test_intenum_inherited.<locals>.IntEnumNrB   r   r   r   r   r     rD   r   c                   @   r~  )z,TestEnum.test_intenum_inherited.<locals>.phyr   r   Nr  r   r   r   r   r    rg  r  r  )rM   r   r  r   r   r   test_intenum_inherited     zTestEnum.test_intenum_inheritedc                 C   r}  )Nc                   @   r~  )z1TestEnum.test_floatenum_from_scratch.<locals>.phyrx   r   Nr  r   r   r   r   r    rg  r  r   r   rL   r  r  r  r   r   r   test_floatenum_from_scratch  r  z$TestEnum.test_floatenum_from_scratchc                 C   r  )Nc                   @   rA   )z4TestEnum.test_floatenum_inherited.<locals>.FloatEnumNrB   r   r   r   r   	FloatEnum  rD   r  c                   @   r~  )z.TestEnum.test_floatenum_inherited.<locals>.phyrx   r   Nr  r   r   r   r   r    rg  r  r  )rM   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   rL   r  r  r  r   r   r   test_strenum_from_scratch  r  z"TestEnum.test_strenum_from_scratchc                 C   r  )Nc                   @   rA   )z0TestEnum.test_strenum_inherited.<locals>.StrEnumNrB   r   r   r   r   r%     rD   r%   c                   @   r(   )z,TestEnum.test_strenum_inherited.<locals>.phyr  r  Nr  r   r   r   r   r    r,   r  r  )rM   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   rq   r~   rl  rp  N)
r   r   r   SUNDAYMONDAYTUESDAY	WEDNESDAYTHURSDAYFRIDAYSATURDAYr   r   r   r   WeekDay  s    r  )rR   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   rp  z8SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAYr   r   rq  )r   r   r  r7   r  r   r   r   r   r   r   r   indexrL   r   r   r   r   )rM   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   rq   r~   rl  rp  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
  )rM   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   rd  r"   r   r   r   fromhexr   r   )rM   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 rf   )
isinstancer   	Exceptionr;   r   r   r   r   r   r   test_pickle_enum     
zTestEnum.test_pickle_enumc                 C   r  rf   )r  r!   r  r;   r   r   r   r   r   r   test_pickle_int  r  zTestEnum.test_pickle_intc                 C   r  rf   )r  r"   r  r;   r   r   r   r   r   r   test_pickle_float  r  zTestEnum.test_pickle_floatc                 C   r  rf   )r  r0   r  r;   r   Zhimr   r   r   r   test_pickle_enum_function  r  z"TestEnum.test_pickle_enum_functionc                 C   r  rf   )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   
NestedEnum   r,   r  z%s.NestedEnum)r   r   r  r   r   r;   r   r  )rM   r  r   r   r   /test_class_nested_enum_and_pickle_protocol_four  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   rI   _reduce_ex_by_name__reduce_ex__r7   r   r   r  )rM   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   ru  rI   _make_class_unpicklabler>   r   r   Zdillr   )rM   r  r   r   r   test_exploding_pickle0  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   
SkillLevel:  r    r  r  )r   r   r   r  )rM   r  r   r   r   test_string_enum9  s   zTestEnum.test_string_enumc                 C   sL   G dd dt }| |d|j | t|d|j | |d |j d S )Nc                   @   rp   )z-TestEnum.test_getattr_getitem.<locals>.Periodr   r   r   rq   N)r   r   r   morningnoonZeveningnightr   r   r   r   PeriodA  rw   r  r   r  r  )r   r   r  r   r  r  rM   r  r   r   r   test_getattr_getitem@  s   zTestEnum.test_getattr_getitemc                 C   s   | j }| t|d d S )N__eq__)rv   rL   r   r   r   r   r   test_getattr_dunderJ  r   zTestEnum.test_getattr_dunderc                 C   s4   G dd dt }| t||j|j|j|jg d S )Nc                   @   rp   )z-TestEnum.test_iteration_order.<locals>.Seasonr   rq   r   r   N)r   r   r   rs   ru   rt   rr   r   r   r   r   rv   O  rw   rv   )r   r   r   rs   ru   rt   rr   r   r   r   r   test_iteration_orderN  s
   zTestEnum.test_iteration_orderc                 C   s2   |  tt| j| jj| jj| jj| jjg d S rf   )r   r   reversedrv   ru   rt   rs   rr   r   r   r   r   test_reversed_iteration_orderY  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   rM   r  r   r   monthr   r   r   r   !test_programmatic_function_string`  s    
z*TestEnum.test_programmatic_function_stringc                 C   s   t dddd}t|}| t|t| | t|d| | |j|j|jg| td dD ],\}}||}| t	|j
| | || | |j| | || | t|| q1d S )Nr  r  
   startr   r  r  r   r   r   ,test_programmatic_function_string_with_startq      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+   rL   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>.MoreColorrq   r~   rl  Nr   r   r   ZcyanmagentaZyellowr   r   r   r   	MoreColor  r    r  z0EvenMoreColor: cannot extend enumeration 'Color'c                   @   r$   )z.TestEnum.test_extending.<locals>.EvenMoreColorrp  N)r   r   r   Z
chartrueser   r   r   r   EvenMoreColor  r'   r  )r   r   r   rz  r   )rM   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&  rn   z6TestEnum.test_exclude_methods.<locals>.whatever.reallyN)r   r   r   r   r   r  r   r   r   r   whatever#  r|   r  zno, not that)r   ZassertIsNotr   r  r   r   )rM   r  r   r   r   test_exclude_methods"  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   -  r'   r   )r   r   r   r   r   r   r   r   test_wrong_inheritance_order+  s   "z%TestEnum.test_wrong_inheritance_orderc                 C   sT   G dd dt }G dd dt }| |j|j | |j|j | |j|j d S )Nc                   @   r   )z2TestEnum.test_intenum_transitivity.<locals>.numberr   r   r   N)r   r   r   r   r   threer   r   r   r   number1  r    r  c                   @   r   )z2TestEnum.test_intenum_transitivity.<locals>.numeror   r   r   N)r   r   r   unodostresr   r   r   r   numero5  r    r  )r   r   r   r  r   r  r  r  )rM   r  r  r   r   r   test_intenum_transitivity0  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   
Monochrome>  r,   r  c                   @   r(   )z0TestEnum.test_wrong_enum_in_call.<locals>.Genderr   r   Nr   r   r   malefemaler   r   r   r   GenderA  r,   r  )r   r   r   r  rM   r  r  r   r   r   test_wrong_enum_in_call=     z TestEnum.test_wrong_enum_in_callc                 C   s4   G dd dt }G dd dt}| t||j d S )Nc                   @   r(   )z:TestEnum.test_wrong_enum_in_mixed_call.<locals>.Monochromer   r   Nr  r   r   r   r   r  G  r,   r  c                   @   r(   )z6TestEnum.test_wrong_enum_in_mixed_call.<locals>.Genderr   r   Nr  r   r   r   r   r  J  r,   r  )r   r   r   r   r  r  r   r   r   test_wrong_enum_in_mixed_callF  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  P  r,   r  c                   @   r(   )z2TestEnum.test_mixed_enum_in_call_1.<locals>.Genderr   r   Nr  r   r   r   r   r  S  r,   r  )r   r   r  r  r  r   r   r   test_mixed_enum_in_call_1O     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  Y  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   test_mixed_enum_in_call_2X  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   rf   )r   r   r   r   r   r   __int__c  rn   z2TestEnum.test_flufl_enum.<locals>.Fluflnum.__int__N)r   r   r   r  r   r   r   r   Fluflnumb  r   r  c                   @   r   )z0TestEnum.test_flufl_enum.<locals>.MailManOptionsr   r   r   N)r   r   r   option1Zoption2Zoption3r   r   r   r   MailManOptionse  r    r  r   )r   r   r   r  )rM   r  r  r   r   r   test_flufl_enuma  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   Numberl  r,   r  c                   @   r   )z+TestEnum.test_introspection.<locals>.StringZsoftZroughZhardN)r   r   r   yarnZropeZwirer   r   r   r   Stringq  r    r  c                   @   r(   )z*TestEnum.test_introspection.<locals>.Plainr  r   N)r   r   r   vanillar   r   r   r   r   Plainw  r,   r  )
r   r   r   r^  r   r   r   r  r  rQ  )rM   r  r  r  r   r   r   test_introspectionk  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  rq   Z
chartreuse)r   r   r   KeyErrorr  r   r   r   test_no_such_enum_member}  s   

"z!TestEnum.test_no_such_enum_memberc                 C   rI  )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   rL    rn   z.TestEnum.test_new_repr.<locals>.Color.__repr__N)r   r   r   r  r  r  rL  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   rL    rn   z5TestEnum.test_inherited_repr.<locals>.MyEnum.__repr__Nrf  r   r   r   r   ri    r   ri  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   )rM   ri  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   r+  r   r   r+        r+  c                   @   rA   )z:TestEnum.test_multiple_mixin_mro.<locals>.AutoNumberedEnumNrB   r   r   r   r   AutoNumberedEnum  rD   r1  )	metaclassc                   @   rA   )z5TestEnum.test_multiple_mixin_mro.<locals>.AutoIntEnumNrB   r   r   r   r   AutoIntEnum  rD   r3  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   rR   r  r  r   r   r   r   TestAutoNumber  r    r6  c                   @   r4  )z5TestEnum.test_multiple_mixin_mro.<locals>.TestAutoInt.r   Nr5  r   r   r   r   TestAutoInt  r    r7  )r   r   r   )rM   r1  r3  r6  r7  r   r.  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   argsr@  r   rM   r   r   r   r        zBTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__new__c                 S      | j S rf   r@  r   r   r   r   __getnewargs__     zITestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__getnewargs__c                 S   rD  rf   r?  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   rL  r   r   r   r   rL       zCTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__repr__c                 S   &   t }|j}|jtu r|| S || S rf   r   r%  __objclass__rQ  rL  rM   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   rM   otherr)  r;  r   r   __add__     zBTestEnum.test_subclasses_with_getnewargs.<locals>.NamedInt.__add__N)	r   r   r   r   rF  r  rL  r%  rZ  r   rY  r   r   r;        	
	r;  c                   @      e Zd ZdZdZdZdS )z5TestEnum.test_subclasses_with_getnewargs.<locals>.NEINEIzthe-xr   zthe-yr   Nr   r   r   xyr   r   r   r   r^    r    r^  NamedInt('(the-x + the-y)', 3)testr~   r   r   r   r   r   r   r   rb  rc  ru  r;   r   rM   r^  ZNI5r   rY  r   test_subclasses_with_getnewargs     '


z(TestEnum.test_subclasses_with_getnewargsc                    r9  )	Nc                       r:  )z=TestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedIntr;  c                 W   r<  r=  r>  rA  r   r   r   r     rC  zETestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__new__c                 S   s
   | j i fS rf   rE  r   r   r   r   __getnewargs_ex__  rn   zOTestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__getnewargs_ex__c                 S   rD  rf   rH  r   r   r   r   r   	  rI  zFTestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__name__c                 S   rJ  rK  rL  r   r   r   r   rL    rM  zFTestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__repr__c                 S   rN  rf   rO  rQ  r   r   r   r%    rS  zETestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__str__c                    rT  rU  rV  rW  rY  r   r   rZ    r[  zETestEnum.test_subclasses_with_getnewargs_ex.<locals>.NamedInt.__add__N)	r   r   r   r   rj  r  rL  r%  rZ  r   rY  r   r   r;    r\  r;  c                   @   r]  )z8TestEnum.test_subclasses_with_getnewargs_ex.<locals>.NEIr^  r_  r`  Nra  r   r   r   r   r^  #  r    r^  rd  re  r~   r   rf  rg  r   rY  r   "test_subclasses_with_getnewargs_ex  ri  z+TestEnum.test_subclasses_with_getnewargs_exc                    r9  )	Nc                       r:  )z6TestEnum.test_subclasses_with_reduce.<locals>.NamedIntr;  c                 W   r<  r=  r>  rA  r   r   r   r   7  rC  z>TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__new__c                 S      | j | jfS rf   r   r@  r   r   r   r   
__reduce__@  rM  zATestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__reduce__c                 S   rD  rf   rH  r   r   r   r   r   B  rI  z?TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__name__c                 S   rJ  rK  rL  r   r   r   r   rL  E  rM  z?TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__repr__c                 S   rN  rf   rO  rQ  r   r   r   r%  J  rS  z>TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__str__c                    rT  rU  rV  rW  rY  r   r   rZ  S  r[  z>TestEnum.test_subclasses_with_reduce.<locals>.NamedInt.__add__N)	r   r   r   r   rn  r  rL  r%  rZ  r   rY  r   r   r;  5  r\  r;  c                   @   r]  )z1TestEnum.test_subclasses_with_reduce.<locals>.NEIr^  r_  r`  Nra  r   r   r   r   r^  \  r    r^  rd  re  r~   r   rf  rg  r   rY  r   test_subclasses_with_reduce4  ri  z$TestEnum.test_subclasses_with_reducec                    r9  )	Nc                       r:  )z9TestEnum.test_subclasses_with_reduce_ex.<locals>.NamedIntr;  c                 W   r<  r=  r>  rA  r   r   r   r   p  rC  zATestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__new__c                 S   rl  rf   rm  rM   r  r   r   r   r  y  rM  zGTestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__reduce_ex__c                 S   rD  rf   rH  r   r   r   r   r   {  rI  zBTestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__name__c                 S   rJ  rK  rL  r   r   r   r   rL  ~  rM  zBTestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__repr__c                 S   rN  rf   rO  rQ  r   r   r   r%    rS  zATestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__str__c                    rT  rU  rV  rW  rY  r   r   rZ    r[  zATestEnum.test_subclasses_with_reduce_ex.<locals>.NamedInt.__add__N)	r   r   r   r   r  r  rL  r%  rZ  r   rY  r   r   r;  n  r\  r;  c                   @   r]  )z4TestEnum.test_subclasses_with_reduce_ex.<locals>.NEIr^  r_  r`  Nra  r   r   r   r   r^    r    r^  rd  re  r~   r   rf  rg  r   rY  r   test_subclasses_with_reduce_exm  ri  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>.NamedIntr;  c                 W   r<  r=  r>  rA  r   r   r   r     rC  zPTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__new__c                 S   rD  rf   rH  r   r   r   r   r     rI  zQTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__name__c                 S   rJ  rK  rL  r   r   r   r   rL    rM  zQTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__repr__c                 S   rN  rf   rO  rQ  r   r   r   r%    rS  zPTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__str__c                    rT  rU  rV  rW  rY  r   r   rZ    r[  zPTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NamedInt.__add__Nr   r   r   r   r  rL  r%  rZ  r   rY  r   r   r;        	
	r;  c                   @   r]  )zCTestEnum.test_subclasses_without_direct_pickle_support.<locals>.NEIr^  r_  r`  Nra  r   r   r   r   r^    r    r^  rd  re  r~   r   )r   r   r   r   r   r   rb  rc  ru  r   r>   r   r   r   rg  r   rY  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                       rr  )zSTestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedIntr;  c                 W   r<  r=  r>  rA  r   r   r   r     rC  z[TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__new__c                 S   rD  rf   rH  r   r   r   r   r     rI  z\TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__name__c                 S   rJ  rK  rL  r   r   r   r   rL    rM  z\TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__repr__c                 S   rN  rf   rO  rQ  r   r   r   r%    rS  z[TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__str__c                    rT  rU  rV  rW  rY  r   r   rZ    r[  z[TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NamedInt.__add__Nrs  r   rY  r   r   r;    rt  r;  c                   @   s    e Zd ZdZdZdZdd ZdS )zNTestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NEIr^  r_  r`  c                 S   s   t | j| jffS rf   )r   r   rK  rp  r   r   r   r    s   z\TestEnum.test_subclasses_without_direct_pickle_support_using_name.<locals>.NEI.__reduce_ex__N)r   r   r   rb  rc  r  r   r   r   r   r^    r  r^  rd  re  r~   r   )r   r   r   r   r   r   rb  rc  ru  r   r;   rg  r   rY  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                   @   rh  )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   rw    rw   rw  rx  )tupler   r   r   ry  r   rz  r   r{  ru  r;   )rM   rw  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   rQ  r   r   r   r   r=   r   r   r   r   #     
zQTestEnum.test_duplicate_values_give_unique_enum_items.<locals>.AutoNumber.__new__c                 S   r   rf   r   r   r   r   r   r   r  (  rn   zQTestEnum.test_duplicate_values_give_unique_enum_items.<locals>.AutoNumber.__int__N)r   r   r   ry  rz  r{  r   r  r   r   r   r   
AutoNumber  s    r  r   r   r   )	r   r   r   ry  rz  r{  r   r   r   )rM   r  r   r   r   ,test_duplicate_values_give_unique_enum_items  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   4  r  zJTestEnum.test_inherited_new_from_enhanced_enum.<locals>.AutoNumber.__new__c                 S   r   rf   r  r   r   r   r   r  9  rn   zJTestEnum.test_inherited_new_from_enhanced_enum.<locals>.AutoNumber.__int__N)r   r   r   r   r  r   r   r   r   r  3  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  ;  r    r  rJ  )r   r   r   r  r  r  mapr   rM   r  r  r   r   r   %test_inherited_new_from_enhanced_enum2  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   D  s   zGTestEnum.test_inherited_new_from_mixed_enum.<locals>.AutoNumber.__new__Nr   r   r   r   r   r  C  r   r  c                   @   r  )z:TestEnum.test_inherited_new_from_mixed_enum.<locals>.Colorr   Nr  r   r   r   r   r  I  r    r  rJ  )r   r   r   r  r  r  r  r   r  r   r   r   "test_inherited_new_from_mixed_enumB  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   rR   r   r   r   r   OrdinaryEnumQ  r'   r  )r   r   r   rR   )rM   r  r   r   r   test_equalityP  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 rf   r   r   NotImplementedrM   rX  r   r   r   __ge__X     z7TestEnum.test_ordered_mixin.<locals>.OrderedEnum.__ge__c                 S   s   | j |j u r| j|jkS tS rf   r  r  r   r   r   __gt__\  r  z7TestEnum.test_ordered_mixin.<locals>.OrderedEnum.__gt__c                 S   s   | j |j u r| j|jkS tS rf   r  r  r   r   r   __le__`  r  z7TestEnum.test_ordered_mixin.<locals>.OrderedEnum.__le__c                 S   s   | j |j u r| j|jk S tS rf   r  r  r   r   r   __lt__d  r  z7TestEnum.test_ordered_mixin.<locals>.OrderedEnum.__lt__N)r   r   r   r  r  r  r  r   r   r   r   OrderedEnumW  s
    r  c                   @   r}   )z*TestEnum.test_ordered_mixin.<locals>.Grader~   rq   r   r   r   Nr   r   r   r   r   Gradeh  r   r  )r   ZassertGreaterr   r   ZassertLessEqualr   r   Z
assertLessr   ZassertGreaterEqualr   r   )rM   r  r  r   r   r   test_ordered_mixinV  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 rf   )printr   r   r   r   r   shadew     z-TestEnum.test_extending2.<locals>.Shade.shadeNr   r   r   r  r   r   r   r   Shadev  r   r  c                   @   r   )z'TestEnum.test_extending2.<locals>.Colorr   r   r   Nr  r   r   r   r   r  y  r    r  c                   @   r   )z+TestEnum.test_extending2.<locals>.MoreColorrq   r~   rl  Nr  r   r   r   r   r  ~  r    r  )r   r   r   rM   r  r  r  r   r   r   test_extending2u  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   rD  rf   r   r   r   r   r   r    rG  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   rd    rn   z+TestEnum.test_extending3.<locals>.Color.hexN)r   r   r   rd  r   r   r   r   r    r   r  c                   @   r   )z+TestEnum.test_extending3.<locals>.MoreColorrq   r~   rl  Nr  r   r   r   r   r    r    r  z5 hexlified!)r   r   r  rd  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   rf   r   r   r   r   r   re    r   z8TestEnum.test_subclass_duplicate_name.<locals>.Base.testNr   r   r   re  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   re  rM   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   re    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   re  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 rf   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   )rM   rB  r   rR   r   r   r   r   rk     s   z8TestEnum.test_no_duplicates.<locals>.UniqueEnum.__init__N)r   r   r   rk   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    rw   )r   r   r   )rM   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 rf   massradius)rM   r  r  r   r   r   rk     s   
z+TestEnum.test_init.<locals>.Planet.__init__c                 S   s   d}|| j  | j| j  S )NgyдW=r  )rM   rr  r   r   r   surface_gravity  s   z2TestEnum.test_init.<locals>.Planet.surface_gravityN)r   r   r   ZMERCURYZVENUSEARTHZMARSZJUPITERZSATURNZURANUSZNEPTUNErk   r  r  r   r   r   r   Planet  s    r  r   g#@r  )r   r   roundr  r  r   )rM   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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	 < q5e
ZeZeZdS )z$TestEnum.test_ignore.<locals>.Periodz3
            different lengths of time
            c                 S   r   rf   )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   rp  Zweekzweek_%d    Zdayzday_%dN)r   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   rH   r   rL   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   )rM   r  r  rI   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 rf   )r   r   labelr   )r   rB  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  )rM   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 rf   r   r   r  countZ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  rf   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  )rM   r  r  r   r   r   test_auto_name_inherit#  s   zTestEnum.test_auto_name_inheritc                 C   s$   G dd dt }| |jjd d S )Nc                   @      e Zd ZdZe ZdS )z)TestEnum.test_auto_garbage.<locals>.Colorr  Nr   r   r   r  r	   r  r   r   r   r   r  2      
r  r   )r   r   r  r   r  r   r   r   test_auto_garbage1  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  8  s    
r  r  r   r   r  r  r   r   r   test_auto_garbage_corrected7  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  rf   r   r  r   r   r   r  H  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  D  s
    r  r  r  r   r   r   test_auto_orderB  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  rf   r   r  r   r   r   r  P  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  N  s    
r  r  )r	   r   r   r   r   r  r  r  r   r  r   test_auto_order_wierdK  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	   ry  Zprimerorz  r{  r   r   r   r   DupesX      

r  r   r   ry  rz  r{  r   rM   r  r   r   r   test_duplicate_autoW      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   rN  rO  rP  r   r   r   r   r  _  r    r  rp  Exception not raised.)r   r   rL   __context__r  rM   r  excr   r   r   test_default_missing^  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_o  s   z.TestEnum.test_missing.<locals>.Color._missing_N)r   r   r   r  r  r  classmethodr  r   r   r   r   r  k  s    r  r  rp  r  r  r  )
r   r   r  r   rL   r  r  r   r  r  r  r   r   r   test_missingj  s.   


 zTestEnum.test_missingc                 C   s  G dd d}G dd d}G dd dt }G dd dt }G d	d
 d
|t }| |jjd | |jjd | |jjd | |jd | t|jd G dd
 d
||t }| |jjd | |jjd | |jjd | |jd | t|jd G dd
 d
||t }| |jjd | |jjd | |jjd | |jd | t|jd G dd d||t }| |jjd | |jjd | |jjd | t|jd | |j d G dd d||t }| |jjd | |jjd | |jjd | t|jd | |j d | |j	 d G dd d|||}| |jjd | |jjd | |jjd | t|jd | |j d | |j	 d G dd d|||}	| |	jjd | |	jjd | |	jjd | t|	jd | |	j d | |	j	 d G dd d|t
||}
| |
jjd | |
jjd | |
jjd | t|
jd | |
j d | |	j	 d | t|
t d S )Nc                   @      e Zd Zedd ZdS )z.TestEnum.test_multiple_mixin.<locals>.MaxMixinc                 S   s   t | }|| _|S rf   )r   MAX)r   maxr   r   r   r    s   z2TestEnum.test_multiple_mixin.<locals>.MaxMixin.MAXN)r   r   r   re   r  r   r   r   r   MaxMixin  r  r  c                   @   r   )z.TestEnum.test_multiple_mixin.<locals>.StrMixinc                 S   
   | j  S rf   rK  lowerr   r   r   r   r%    rn   z6TestEnum.test_multiple_mixin.<locals>.StrMixin.__str__NrU  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	   rN  rO  rP  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   rN  r   rO  rP  r  r   r   r  r   rL   
issubclassr   )rM   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   rB  kwargsrR   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                   @   rA   )z6TestEnum.test_multiple_inherited_mixin.<locals>.MyEnumNrB   r   r   r   r   ri    rD   ri  c                   @   r   )z9TestEnum.test_multiple_inherited_mixin.<locals>.Decision2r  r  r  Nr  r   r   r   r   	Decision2  r  r  )r   r   r   )rM   r%   r  ri  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 rf   )r%  r   rn  r/  r   r   r     r  z=TestEnum.test_multiple_mixin_inherited.<locals>.MyInt.__new__r,  r   r   r/  r   ry    s    ry  c                   @   r   )z8TestEnum.test_multiple_mixin_inherited.<locals>.HexMixinc                 S   rb  rf   rc  r   r   r   r   rL  
  re  zATestEnum.test_multiple_mixin_inherited.<locals>.HexMixin.__repr__Nrf  r   r   r   r   HexMixin	  r   r  c                   @   rA   )z9TestEnum.test_multiple_mixin_inherited.<locals>.MyIntEnumNrB   r   r   r   r   r    rD   r  c                   @   r$   )z3TestEnum.test_multiple_mixin_inherited.<locals>.Foor   N)r   r   r   TESTr   r   r   r   Foo  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     s   z;TestEnum.test_multiple_mixin_inherited.<locals>.Fee.__new__N)r   r   r   r  r   r   r   r   r   Fee  rg  r  r   )r   rI   r   rL   r  r  r   r   )rM   ry  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)compiler  )rM   codeZ	global_nsZlocal_lsr   r   r   test_empty_globals  s
   zTestEnum.test_empty_globalsNr   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   Private-  r'   r&  r$  c                   @   r$   )r#  ZHoolihanN)r   r   r   Z_Private__major_r   r   r   r   r&  2  r'   )assertWarnsDeprecationWarningr   r   r%  r   r   )rM   r&  r   r   r   "test_warning_for_private_variables'  s   &z+TestEnum.test_warning_for_private_variables)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(  r2  r6  r:  r>  rA  rB  rC  rE  rG  rH  rS  r_  rv  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  r8  rh  rk  ro  rq  ru  rv  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!  unittest
skipUnlesssysversion_infor)  r   r   r   r   ro      s   #	
				.		
	
					


%999957
	%`	ro   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                   @   rp   )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  ;  rw   r  r   r  r   r   r   test_same_members:  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>.Colorr0  r   r   r   Nr   r   r   r2  r  r  r  verder   r   r   r   r  B  r   r  r3  r  r   r   r   test_same_members_with_aliasesA  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                   @   rp   )z6TestOrder.test_same_members_wrong_order.<locals>.Colorr0  r   r   r   N)r   r   r   r2  r  r  r  r   r   r   r   r  K  rw   r  rz  r   r   r  r   r   r   test_same_members_wrong_orderI     "z'TestOrder.test_same_members_wrong_orderc                 C   r9  )Nr:  c                   @   rp   )z5TestOrder.test_order_has_extra_members.<locals>.Colorred green blue purpler   r   r   Nr1  r   r   r   r   r  S  rw   r  r;  r  r   r   r   test_order_has_extra_membersQ  r=  z&TestOrder.test_order_has_extra_membersc                 C   r9  )Nr:  c                   @   r5  )zBTestOrder.test_order_has_extra_members_with_aliases.<locals>.Colorr>  r   r   r   Nr6  r   r   r   r   r  [  r   r  r;  r  r   r   r   )test_order_has_extra_members_with_aliasesY  r=  z3TestOrder.test_order_has_extra_members_with_aliasesc                 C   r9  )Nr:  c                   @   r}   )z4TestOrder.test_enum_has_extra_members.<locals>.Colorr0  r   r   r   rq   N)r   r   r   r2  r  r  r  purpler   r   r   r   r  d  r   r  r;  r  r   r   r   test_enum_has_extra_membersb  r=  z%TestOrder.test_enum_has_extra_membersc                 C   r9  )Nr:  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>.Colorr0  r   r   r   rq   N)	r   r   r   r2  r  r  r  rA  r7  r   r   r   r   r  m  s    r  r;  r  r   r   r   (test_enum_has_extra_members_with_aliasesk  r=  z2TestOrder.test_enum_has_extra_members_with_aliasesN)
r   r   r   r4  r8  r<  r?  r@  rB  rC  r   r   r   r   r.  8  s    		r.  c                   @   s  e Zd ZdZG dd deZG dd deZG dd deZdd	 Zd
d Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zejd4d5 Z d6d7 Z!d8S )9TestFlagzTests of the Flags.c                   @   s   e Zd Zd\ZZZdS )zTestFlag.Perm)rq   r   r   N)r   r   r   RWXr   r   r   r   Permy  r   rH  c                   @   r}   )zTestFlag.Openr   r   r   r      Nr   r   r   ROWORWACCEr   r   r   r   Open|  r   rP  c                   @   $   e Zd ZdZdZdZdZeeB ZdS )zTestFlag.Colorr   r   r   rq   Nr   r   r   BLACKrN  rO  rP  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rH  r   r   rE  rF  rG  rP  rK  rL  rN  rO  rM   rH  rP  r   r   r   test_str  0    zTestFlag.test_strc                 C   rU  )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>r^  <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>rH  r   r   rE  rF  rG  rP  rK  rL  rN  rO  rh  r   r   r   	test_repr  rj  zTestFlag.test_reprc                 C   8   | j }| t|jdd | t|j|jB dd d S )Nr   rV  r]  rH  r   r   rE  rG  rM   rH  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 rf   rH  r   r   r   r   rP  rK  rO  rM   rH  r   jrP  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   )rH  rE  rF  rG  r   r   r   r   r   rP  rK  rO  
rM   rH  rM  RXWXRWXvaluesr   r  rP  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  )rH  rE  rF  rG  r   r   r   r   rP  rL  rK  rO  	rM   rH  rM  r  r  r  r  r   rP  r   r   r   test_invert  s   "zTestFlag.test_invertc                 C   D   | j }|D ]}| | q| j}|D ]}| t|jt| qd S rf   rH  rL   rP  r   r   r   rM   rH  frP  r   r   r   r    	     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 NrH  R W Xr   r   r   r   r   r   rE  rF  rG  r   r   r   r   r   r   r   r   rM   rH  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 NrH  r  rq  r  r   r  r  r   r   r   +test_programatic_function_string_with_start	     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 NrH  )rE  rF  rG  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 NrH  ))rE  r   )rF  rq  )rG  r  r   r  r   r   r  r  r   r   r   "test_programatic_function_iterable5	  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   rE  rF  rG  r   r   r   r   r   r   r   r   r  r   r   r   #test_programatic_function_from_dictD	  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 rf   )r  r#   r  r;   r   r   r   r   r   r   r   test_pickleS	  s   
zTestFlag.test_picklec                 C   s   | j }| j}| |j|v  | |j|v  | t d|v  W d    n1 s*w   Y  | t d|v  W d    n1 sCw   Y  | t d|v  W d    n1 s\w   Y  | t d|v  W d    d S 1 svw   Y  d S )NrS  rK  r   )rP  r  rH   rS  rK  r   r   rM   rP  r  r   r   r   r   Y	  s    



"zTestFlag.test_containsc           	      C   s   | j }|\}}}||B }||B }||B }||B |B }| ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  | ||v  d S rf   )rH  rL   rH   	rM   rH  rE  rF  rG  rM  r  r  r  r   r   r   test_member_containsg	  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   rq   )r   r   r   r  r  r  r   r  r   r   r   r  {	  r  zTestFlag.test_auto_numberc                 C   r9  )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  )rz  r   r   r  r   r   r   test_auto_number_garbage	  r=  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   rq   rl  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   rz  r   )rM   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   rq   rl  N)r   r   r   r  r  r  r   r   r   r   r  	  r    r  rp  z<Bizarre.d|c|b: 7>)r   r   r   )rM   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   re   r  r   r   r   r   AllMixin	  r  r  c                   @   r   )z.TestFlag.test_multiple_mixin.<locals>.StrMixinc                 S   r  rf   r  r   r   r   r   r%  	  rn   z6TestFlag.test_multiple_mixin.<locals>.StrMixin.__str__NrU  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   rq   rp  r  c                   @   r  r  r  r   r   r   r   r  	  r  r  c                   @   r  r  r  r   r   r   r   r  	  r  )r   r   rN  r   rO  rP  r  r   rM   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 rf   r   r  r   r   r   r  	  re  z7TestFlag.test_unique_composite.<locals>.TestFlag.__eq__c                 S   r   rf   hashr   r   r   r   r   __hash__	  rn   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   rD  	      rD  Fc                     <   zt dD ]	}  |  qW d S  ty   dY d S w N   Tr7   addr  r   rD  failedseenr   r   
cycle_enum	     
z2TestFlag.test_unique_composite.<locals>.cycle_enumc                       g | ]}t j d qS )r:   	threadingThreadr  rZ   r  r   r   r	  	      
z2TestFlag.test_unique_composite.<locals>.<listcomp>rq  ;at least one thread failed while creating composite membersr  "too many composite members created)r   r   r7   r   start_threadsrH   r   r   rM   threadsr   rD  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_testFri  r   )r%  __init_subclass__rH   __dict__get_test1r   kwds)r   rM   r   r   r  	  s   
z=TestFlag.test_init_subclass.<locals>.MyEnum.__init_subclass__r   r   r   r  r-  r   r   r/  r   ri  	  r0  ri  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  
  s   
z@TestFlag.test_init_subclass.<locals>.TheirEnum.__init_subclass__r  r   )r  r/  r   r   
  r0  r  c                   @   r   )z.TestFlag.test_init_subclass.<locals>.WhoseEnumc                 [   r   rf   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   	WhoseEnum
  r   r  c                   @   r$   )z+TestFlag.test_init_subclass.<locals>.NoEnumr   Nr   r   r   r  r   r   r   r   NoEnum
  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  
  rn   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   rf   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   	NeverEnum
  r'   r  )r   r   r  rH   r  )rM   ri  r  r  r  r  r  r   )r  rM   r   test_init_subclass	  s"   zTestFlag.test_init_subclassN)"r   r   r   r&   r   rH  rP  r  ri  rw  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   rD  v  s<    +
%rD  c                   @   s   e Zd ZdZG dd deZG dd deZG dd deZdd	 Zd
d Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zejd.d/ Zd0S )1TestIntFlagzTests of the IntFlags.c                   @   r   )zTestIntFlag.Permr   r   rq   N)r   r   r   rG  rF  rE  r   r   r   r   rH  !
  r    rH  c                   @   r}   )zTestIntFlag.Openr   r   r   r   rI  NrJ  r   r   r   r   rP  &
  r   rP  c                   @   rQ  )zTestIntFlag.Colorr   r   r   rq   NrR  r   r   r   r   r  -
  rT  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   )rH  rL   r^  r   rP  r  r   r   rF  rG  rL  rM  )rM   rH  rP  r  r   r   r   	test_type4
  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 )NrV  rW  rX  rY  rZ  rq  zPerm.8|Rr   r[  zPerm.8r\  r]  zPerm.-8r^  r_  r`  ra  rb  rc  rq   zOpen.4rd  re  zOpen.AC|RW|WOrf  rg  rh  r   r   r   ri  D
  <    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 )#Nrk  rl  rm  rn  ro  rq  z<Perm.8|R: 12>r   rp  z<Perm.8: 8>z<Perm.W|X: -5>z<Perm.R|X: -3>z<Perm.R|W: -2>z<Perm.X: -7>z<Perm.-8: -8>z<Perm.W|X: -13>r^  z<Perm.R|W|X: -1>r  z<Perm.R|W|X: -9>rq  rr  rs  rt  ru  rq   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>rv  rh  r   r   r   rw  e
  r  zTestIntFlag.test_reprc                 C   rx  )Nr   45ry  rz  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 Nrq  r   	rH  r   r   r   r   r7   rP  rK  rO  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 %rrq  rp  )rH  rE  rF  rG  r   r   r   r   r   r7   rP  rK  rO  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  )rH  rE  rF  rG  r   r   r   r   r   rP  rL  rK  rO  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   rE  rF  rG  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    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   rE  rF  rG  r   r   r   r   r   r   r   r   r  r   r   r   r  !  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 )NrH  r   ThingrI   r   r   r   r   r   rM   rH  r   r  r   r   r   )test_programatic_function_from_empty_list2  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 )NrH  r   r   r  r  r  r   r   r   *test_programatic_function_from_empty_tuple=  s   z6TestIntFlag.test_programatic_function_from_empty_tuplec                 C   s  | j }| j}| |j|v  | |j|v  | |j|v  | |j|v  | t d|v  W d    n1 s:w   Y  | t d|v  W d    n1 sSw   Y  | t d|v  W d    n1 slw   Y  | t d|v  W d    d S 1 sw   Y  d S )NrO  rM  r   )rP  r  rL   rO  rM  rH   r   r   r  r   r   r   r   F  s$   



"zTestIntFlag.test_containsc           	      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 )Nre  )rH  rL   rH   r   r   r  r   r   r   r  V  s*   
"z TestIntFlag.test_member_containsc                 C   r  rf   r  r  r   r   r   r   l  r  zTestIntFlag.test_boolc                 C   r  )Nc                   @   r  )z1TestIntFlag.test_multiple_mixin.<locals>.AllMixinc                 S   r  r!  r  r  r   r   r   r  v  r  z5TestIntFlag.test_multiple_mixin.<locals>.AllMixin.ALLNr  r   r   r   r   r  u  r  r  c                   @   r   )z1TestIntFlag.test_multiple_mixin.<locals>.StrMixinc                 S   r  rf   r  r   r   r   r   r%    rn   z9TestIntFlag.test_multiple_mixin.<locals>.StrMixin.__str__NrU  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   rq   rp  r  c                   @   r  r  r  r   r   r   r   r    r  r  c                   @   r  r  r  r   r   r   r   r    r  )r   r   rN  r   rO  rP  r  r   r  r   r   r   r  t  r  zTestIntFlag.test_multiple_mixinc                    r  )Nc                   @   r  )z3TestIntFlag.test_unique_composite.<locals>.TestFlagc                 S   r  rf   r   r  r   r   r   r    re  z:TestIntFlag.test_unique_composite.<locals>.TestFlag.__eq__c                 S   r   rf   r  r   r   r   r   r    rn   z<TestIntFlag.test_unique_composite.<locals>.TestFlag.__hash__Nr  r   r   r   r   rD    r  rD  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>rq  r  r  r  )r   r   r7   r   r  rH   r   r   r  r   r  r   r    r  z!TestIntFlag.test_unique_compositeN)r   r   r   r&   r   rH  rP  r  r  ri  rw  r{  r  r  r  r  r  r  r  r  r  r  r  r   r  r   r  r   r  r  r   r   r   r   r  
  s4    !!	+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   )rM   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   )rM   r  r  r   r   r   test_non_latin_character_string     

z;TestEmptyAndNonLatinStrings.test_non_latin_character_stringc                 C   r  )N
hebrew_123)   א23r  r   r  )rM   r  r  r   r   r   test_non_latin_number_string  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   Cleaner  r  r  r   r   r   )rM   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                   @   r4  )z+TestUnique.test_unique_dirty.<locals>.Dirtyr   r  Nr  r   r   r   r   Dirty  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   Dirtier  
    r  )rz  r   r   r   r   )rM   r  r  r   r   r   test_unique_dirty  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                   @   rp   )z1TestUnique.test_unique_with_name.<locals>.Sillierr   r   r   rq   N)r   r   r   r  r   r  r   r   r   r   r   Sillier  r  r  r  )rM   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  P  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%   r&   !expected_help_output_without_docsr   expected_help_output_with_docsr
   pydocZHelperr  getvaluestripr   )rM   Zexpected_textr  helperresultr   r   r   
test_pydocU  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   )r&   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)rM   r  r#  r  r  r   r   r   test_inspect_getmembersa  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_classrQ  r&   r%  r   r  r   r  r  r  r   r   c                 S   rD  rf   r   r  r   r   r   <lambda>      z>TestStdLib.test_inspect_classify_class_attrs.<locals>.<lambda>)keyc                 S   rD  rf   r   r2  r   r   r   r3    r4  Fz
%s
%s
%s
%s
r&  r   r'  Tr)  )r+  r/  rQ  r   r  r   r   r  r  r  r   r  sortr   Zclassify_class_attrsr  r  r-  )rM   r/  r  r#  r  r  rr   r   r   !test_inspect_classify_class_attrsy  sR   




z,TestStdLib.test_inspect_classify_class_attrs)	r   r   r   ZmaxDiffr   r  r$  r.  r8  r   r   r   r   r  L  s    r  c                   @   r   )MiscTestCasec                 C   s   t | t d S rf   )r   rI   r   r   r   r   test__all__  r  zMiscTestCase.test__all__N)r   r   r   r:  r   r   r   r   r9    r   r9  r~   c                   @   sX   e Zd Zdd Zdd Zeejdd dkdd	d
 Z	eej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__r>  c                 S   
   |  dS NZCONVERT_TEST_
startswithrb  r   r   r   r3       
 zGTestIntEnumConvert.test_convert_value_lookup_priority.<locals>.<lambda>filterr~   CONVERT_TEST_NAME_A)rI   r   	_convert_r   r   r   rM   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 )Nr<  r=  r>  c                 S   r?  r@  rA  rC  r   r   r   r3    rD  z1TestIntEnumConvert.test_convert.<locals>.<lambda>rE  r~   c                 S   s    g | ]}|d d dvr|qS )r   r   )ZCOr[   r   )r  r   r   r   r   r	    s    
z3TestIntEnumConvert.test_convert.<locals>.<listcomp>z&Names other than CONVERT_TEST_* found.)msg)rI   r   rH  r   r   CONVERT_TEST_NAME_FrG  CONVERT_TEST_NAME_BCONVERT_TEST_NAME_CCONVERT_TEST_NAME_DCONVERT_TEST_NAME_Er   rI  r   r   r   test_convert  s   

zTestIntEnumConvert.test_convertNr   )r   rq  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 )Nr<  r=  r>  c                 S   r?  r@  rA  rC  r   r   r   r3    rD  z6TestIntEnumConvert.test_convert_warn.<locals>.<lambda>rE  )r'  r(  rI   r   _convertr   r   r   r   r   test_convert_warn     
"z$TestIntEnumConvert.test_convert_warnr"  z_convert was removed in 3.9c                 C   rR  )Nr<  r=  r>  c                 S   r?  r@  rA  rC  r   r   r   r3    rD  z7TestIntEnumConvert.test_convert_raise.<locals>.<lambda>rE  )r   r   rI   r   rS  r   r   r   r   r   test_convert_raise  rU  z%TestIntEnumConvert.test_convert_raise)r   r   r   rJ  rQ  r*  r+  r,  r-  rT  rV  r   r   r   r   r;    s    

r;  r>  rf   )CrI   r+  r  r,  r*  r  collectionsr   r   r   r   r   r   r   r	   ior
   pickler   r   r   r   Ztest.supportr   r   r   r   r   r   r  r  r   r!   r   r"   r#   r   r%   r)   r   r-   r0   r1   r4   r;   r>   ZTestCaser@   re   ro   r.  rD  r  r  r	  r  r  r  r9  rO  rN  rM  rG  rP  rL  r;  mainr   r   r   r   <module>   s    $
               =>   +   +/'P
/