
    =Og6                    B   d dl Z d dlZd dlmZmZ d dlmZ d dl	m
Z
 g dZdxZxZxZxZZ G d de          Z G d d	e          Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZdCdZd Z G d d          Z e            Z G d d          Z  G d de          Z! G d d          Z" G d de#          Z$ G d d e%          Z&e&Z' G d! d"e&#          Z G d$ d%e          Z G d& d'e(e          Z) G d( d)e*e          Z+d* Z,e,Z-d+ Z. G d, d-e+          Z/e/\  Z0Z1ZZ2 G d. d/ee00          Z G d1 d2e(eee20          Z3d3 Z4d4 Z5d5 Z6d6 Z7d7 Z8d8 Z9dDd:Z:efddd;d<Z; e;e+           G d= d>                      Z<e<\  Z=Z>Z? G d? d@          Z@dA ZAdCdd0dBZBe)e+e3fZdS )E    N)MappingProxyTypeDynamicClassAttribute)or_)reduce)EnumTypeEnumMetaEnumIntEnumStrEnumFlagIntFlagReprEnumautouniquepropertyverifymember	nonmemberFlagBoundarySTRICTCONFORMEJECTKEEPglobal_flag_reprglobal_enum_repr
global_strglobal_enum	EnumCheck
CONTINUOUSNAMED_FLAGSUNIQUEpickle_by_global_namepickle_by_enum_namec                       e Zd Z	 d ZdS )r   c                     || _         d S Nvalueselfr(   s     /usr/lib64/python3.11/enum.py__init__znonmember.__init__       


    N__name__
__module____qualname__r,    r.   r+   r   r      (            r.   r   c                       e Zd Z	 d ZdS )r   c                     || _         d S r&   r'   r)   s     r+   r,   zmember.__init__#   r-   r.   Nr/   r3   r.   r+   r   r      r4   r.   r   c                 d    	 t          | d          pt          | d          pt          | d          S )N__get____set__
__delete__)hasattr)objs    r+   _is_descriptorr=   &   s?     C## 'C##'C&&r.   c                     	 t          |           dk    o7| d d         | dd          cxk    odk    nc o| d         dk    o| d         dk    S )N      ___lennames    r+   
_is_dunderrI   0   sq     IIM !HRSS	))))T))))GsN HO	r.   c                     	 t          |           dk    o7| d         | d         cxk    odk    nc o| dd         dk    o| dd         dk    S )Nr@   r   rC      rA   rE   rG   s    r+   
_is_sunderrM   ;   ss     IIM GtBx&&&&3&&&&1I BK3	r.   c                     t          |t                    sdS t          |dd          }| dz   t          |dd          z   }d|z   }||k    p|                    |          S )NFr2    .r0   )
isinstancetypegetattrendswith)cls_namer<   qualname	s_pattern	e_patterns        r+   _is_internal_classrY   F   sk    c4   usNB//H3j"!=!==IiIy @H$5$5i$@$@@r.   c                     d| d}t          |          }t          |          |k    rA|                    |          r,|||dz            dgk    r|d         dk    s|d         dk    rdS dS )NrC   rB   rL   rK   rA   TF)rF   
startswith)rU   rH   patternpat_lens       r+   _is_privater^   O   s~     !$G'llGII((  WWQY&'C500bSDHOOtur.   c                 0    	 | dk    rdS | | dz
  z  } | dk    S )Nr   FrL   r3   )nums    r+   _is_single_bitra   ]   s-     axxu37NC!8Or.   c                     	 d }t          | t                    r|| d<   d| d<   d S t          | d|           t          | dd           d S )Nc                 &    t          d| z            )Nz%r cannot be pickled)	TypeErrorr*   protos     r+   _break_on_call_reducez6_make_class_unpicklable.<locals>._break_on_call_reducel   s    .5666r.   __reduce_ex__z	<unknown>r1   )rQ   dictsetattr)r<   rg   s     r+   _make_class_unpicklablerk   f   sm    
7 7 7#t 04O'L_&;<<<\;/////r.   c              #      K   | }t          | t                    r| j        } | dk     rt          d|z            | r| |  dz   z  }|V  | |z  } | d S d S )Nr   z%r is not a positive integerrL   )rQ   r	   r(   
ValueError)r`   originalbs      r+   _iter_bits_lsbrp   u   s      H#t i
Qww7(BCCC
 C4!8q      r.   c                 :    t          t          |                     S r&   )listrp   r'   s    r+   show_flag_valuesrs      s    u%%&&&r.   c                 b   	 d|                                  z  }| dk    r-t          j        | |z                                 ddd          }nt          j        |  |dz
  |z   z            }|d d         }|dd          }|*t	          |          |k     r|d         |z  |z   | d          }|d|S )	Nr@   r   10rL      rK    )
bit_lengthbltnsbinreplacerF   )r`   max_bitsceilingssigndigitss         r+   r{   r{      s    	 C##%%%G
axxIcGm$$,,S#q99IsdgkW4455RaR5DqrrUFv;;!!2h)F2XIJJ?FddFF##r.   c                     	 |                      d          }d}t          |d                   D ]\  }}|dk    r nt          |          D ]\  }}||d          ||<   d                    |          S )N
r   rx   )split	enumeratejoin)textlinesblanksichjls          r+   _dedentr      s     JJtEF58$$  299E %    1QRR5a99Ur.   c                       e Zd Zd ZdS )
_auto_nullc                     dS )Nr   r3   r*   s    r+   __repr__z_auto_null.__repr__   s    |r.   N)r0   r1   r2   r   r3   r.   r+   r   r      s#            r.   r   c                        e Zd Z	 efdZd ZdS )r   c                     || _         d S r&   r'   r)   s     r+   r,   zauto.__init__   r-   r.   c                     d| j         z  S )Nzauto(%r)r'   r   s    r+   r   zauto.__repr__   s    DJ&&r.   N)r0   r1   r2   r   r,   r   r3   r.   r+   r   r      sA         (    ' ' ' ' 'r.   r   c                   *    e Zd Z	 ddZd Zd Zd ZdS )r   Nc                 (   |:	 |j         | j                 S # t          $ r t          |d| j                  w xY w| j        ;	 |j         | j                 S # t          $ r t          |d| j                  d w xY w|                     |          S )Nz has no attribute )_member_map_rH   KeyErrorAttributeErrorfget)r*   instance
ownerclasss      r+   r8   zproperty.__get__   s    !.ty99   $4>JJ		J  
 y (%249== ( ( ((8B

DIIN #'((
 yy***s    $:A %A<c                 z    | j         t          d| j        d| j                  |                      ||          S )N<enum z> cannot set attribute )fsetr   clsnamerH   )r*   r   r(   s      r+   r9   zproperty.__set__   sF    9 .;?<<<S   99Xu---r.   c                 x    | j         t          d| j        d| j                  |                      |          S )Nr   z> cannot delete attribute )fdelr   r   rH   )r*   r   s     r+   r:   zproperty.__delete__   sD    9 .>BlllDIIV   99X&&&r.   c                 ,    || _         |j        | _        d S r&   )rH   r0   r   )r*   r   rH   s      r+   __set_name__zproperty.__set_name__   s    	!*r.   r&   )r0   r1   r2   r8   r9   r:   r   r3   r.   r+   r   r      sZ        + + + +(. . .' ' '+ + + + +r.   r   c                       e Zd Z	 d Zd ZdS )_proto_memberc                     || _         d S r&   r'   r)   s     r+   r,   z_proto_member.__init__   r-   r.   c                    	 t          ||           | j        }t          |t                    s|f}n|}|j        t          u r|f}|j        s|                    |          }n |j        |g|R  }t          |d          sQ|j        t          u r||_	        n;	  |j        | |_	        n*# t          $ r}t          d          }||_        |d }~ww xY w|j	        }||_        ||_         |j        |  t!          |j                  |_        t&          }t)          |t&                    rht          |t*                    r/|xj        |z  c_        t/          |          r|xj        |z  c_        d|j                                        z  dz
  |_        	 	 |j        |         }nE# t          $ r8 |j                                        D ]\  }}	|	j	        |k    r|	} nt<          Y nw xY wn# t<          $ r t&          t)          |t&                    s|j                            |           nZt&          St)          |t&                    r>t          |t*                    r)t/          |          r|j                            |           Y nw xY wd }
|j         dd          D ]q}|j!        "                    |          }|St          |tF          tH          f          r|}
 n4t          |d          r#t          |d          rt          |d          r|}
qr|
ratG                      }||_%        |&                    ||           |
j'        |_'        |
j(        |_(        |
j)        |_)        tU          |||           ntU          |||           ||j        |<   	 |j        +                    ||           d S # t          $ r |j,                            |           Y d S w xY w)N_value_z/_value_ not set in __new__, unable to create itr@   rL   r   r   r   )-delattrr(   rQ   tuple_member_type_
_use_args__new_member_r;   objectr   	Exceptionrd   	__cause___name___objclass__r,   rF   _member_names__sort_order_r   
issubclassint_flag_mask_ra   _singles_mask_ry   
_all_bits__value2member_map_r   itemsr   append__mro____dict__getr   r   r   r   r   r   r   rj   
setdefault_unhashable_values_)r*   
enum_classmember_namer(   argsenum_memberexcnew_excrH   canonical_memberfound_descriptorbase
descriptorredirects                 r+   r   z_proto_member.__set_name__   s   	 	
K(((
%'' 	9DDD#u,,8D$ 	E$11*==KK1*1*DtDDDK{I.. 	"'611&+##"*B**BD*IK''  " " "'M G ),G%!M" #(#- d###&z'@#A#A 
:t < <%%% 7&&%/&&!%(( 7--6--$%:+A*M*M*O*O$PST$TJ!	>	#(;EB # # #.8.E.K.K.M.M # #*D*'/588&6 9 #N 	#  	> 	> 	> L%j$77 ! )00====$":t44 %"5#.. % 'u-- % )00===!	>$  &qrr* 	 	D**;77J%j85J*KLL 	'1$E
F33
F33  
F33
 (2$ 
	:zzH)HO!!*k:::,1HM,1HM,1HMJX6666J[999/:
,	9 )44UKHHHHH 	9 	9 	9*11%888888	9s[   B' '
C1C		CF G# ?GG# GG# #BJ JN# #$O
ON)r0   r1   r2   r,   r   r3   r.   r+   r   r      s<          l9 l9 l9 l9 l9r.   r   c                   0     e Zd Z	  fdZ fdZd Z xZS )	_EnumDictc                     t                                                       i | _        g | _        g | _        d| _        d S )NF)superr,   _member_names_last_values_ignore_auto_called)r*   	__class__s    r+   r,   z_EnumDict.__init__h  s>    !r.   c           	         	 t          | j        |          r!dd l}|                    dt          d           t          | j        |          rnt          |          r|dvrt          d|d          |dk    rG| j        rt          d	          t          |t                    r|j        n|}t          | d
|           nx|dk    rt          |t                    r)|                    dd                                          }nt#          |          }|| _        t'          |          t'          | j                  z  }|rt          d|          nt+          |          r
|dk    rd}n|| j        v rt          |d| |                   || j        v rnt          |t,                    r	|j        }nt1          |          rnn|| v rt          |d| |                   t          |t2                    r|j        }d}d}t          |t4                    rd}|f}t7          |          t8          u rt;          d |D                       rg }|D ]}	t          |	t4                    rvd}|	j        t<          k    rC|                     |dtA          | j                  | j!        d d                    |	_        d| _        |	j        }	| j!        "                    |	           |"                    |	           |r	|d         }nt9          |          }d | j        |<   |r| j!        "                    |           tG                      $                    ||           d S )Nr   zzIn 3.13 classes created inside an enum will not become a member.  Use the `member` decorator to keep the current behavior.r@   
stacklevel)_order__generate_next_value__numeric_repr_	_missing__ignore__iter_member__iter_member_by_value__iter_member_by_def_z_sunder_ names, such as z", are reserved for future Enum user   z4_generate_next_value_ must be defined before members_generate_next_valuer   ,rx   z+_ignore_ cannot specify already set names: 	__order__r   z already defined as TFc              3   @   K   | ]}t          |t                    V  d S r&   )rQ   r   ).0vs     r+   	<genexpr>z(_EnumDict.__setitem__.<locals>.<genexpr>  s,      +O+OAJq$,?,?+O+O+O+O+O+Or.   rL   )%rY   	_cls_namewarningswarnDeprecationWarningr^   rM   rm   r   rd   rQ   staticmethod__func__rj   strr|   r   rr   r   setr   rI   r   r(   r=   r   r   rR   r   anyr   r   rF   r   r   r   __setitem__)r*   keyr(   r   _gnvalreadynon_auto_storesingleauto_valuedr   r   s             r+   r   z_EnumDict.__setitem__o  s   	 dne44 	OOOMMO& 	     t~s++ Q	0__ N	0   
 !j33"   ---$ \#$Z[[[)3E<)H)HSu~~e4d;;;;
""eS)) (!MM#c2288::EE KKE$e**s4+='>'>> $*&w*   __ 2	0k!!D&&&###tCyyIJJJDL  y)) *	0KEEE"" '	0 d{{ccc499 MNNNE6** $!NF%&& "	E{{e##+O+O+O+O+O(O(O# ! 
* 
*A!!T** 4).7j00&*&?&?$'C0B,C,CTEVWXWXWXEY'& '&AG 15D-G)00333&&q)))) /'NEE!+..E&*Ds# 0!((///C'''''r.   c                     	 |                                 D ]}||         | |<   n# t          $ r |D ]
\  }}|| |<   Y nw xY w|                                D ]
\  }}|| |<   d S r&   )keysr   r   )r*   membersmore_membersrH   r(   s        r+   updatez_EnumDict.update  s    	# + +$T]T

+ 	# 	# 	#& # #e"T

# #	# (--// 	 	KD%DJJ	 	s   "% ??)r0   r1   r2   r,   r   r   __classcell__r   s   @r+   r   r   a  sk        " " " " "c( c( c( c( c(J      r.   r   c                   P    e Zd Z	 ed             Zddd fd
Zd Zdddddddd	Zd
 Z fdZ	d Z
d Zd Zd Zd Zej        d             Zd Zd Z fdZdddddddZdddddZed             Zed             Zed             Zed             Zed             Z xZS )r   c                     |                      ||           t                      }||_        |                     ||          \  }}|t	          |dd           |d<   |S )Nr   )_check_for_existing_members_r   r   _get_mixins_rS   )metaclsclsbaseskwds	enum_dictmember_type
first_enums          r+   __prepare__zEnumType.__prepare__  sp     	,,S%888KK	!	")"6"6sE"B"BZ!18 72 2I-. r.   NFboundary_simplec                2	   |r t                      j        | |||fi |S |                    dg                               d           |d         }|D ]}|                    |d            |j        }	t          |	          ddhz  }
|
r/t          dd                    d |
D                       z            |                    dd           }t          |
                                          }|                     ||          \  }}|                     |||          \  }}}||d<   ||d	<   |	D ]}||         }t          |          ||<   g |d
<   i |d<   i |d<   g |d<   ||d<   |                     ||          |d<   |pt          |dd           |d<   d|d<   d|d<   d|d<   d |d<   	 d } t                      j        | |||fi |n # t           $ r}|j        p|}Y d }~nd }~ww xY w|||                    j                   t(          lt(          |v rc|t*          u rt-          d          d|vr|j        _        j        |d<   d|vr-|j        }|t*          j        u r|j        }|_        j        |d<   dD ]b}||vr\t          ||          }t          |          }t          t*          |          }t          ||          }|||fv rt5          ||           ct6          It9          t6                    r4dD ]1}||vr+t          t6          |          }t5          ||           |||<   2t:          |r|_        t:          j        _        |=t?          |t@                    r(|!                    dd          "                                }t6          |dk    st6          ft9          t6                    sQtG          d           tG          d           tG          d           tG          d           tG          d           nWt6          Pt9          t6                    r;d D             }|tI          |          k    rj%        _&        |rfd|D             }|r3fd|D             }|j'        k    rt-          d j'        d!|          S )"Nr   mrorO   zinvalid enum member name(s) %sr   c              3   4   K   | ]}t          |          V  d S r&   )repr)r   ns     r+   r   z#EnumType.__new__.<locals>.<genexpr>	  s(      <<T!WW<<<<<<r.   r   r   r   r   r   r   r   r   _value_repr_
_boundary_r   r   r   r   
_inverted_zOReprEnum subclasses must be mixed with a data type (i.e. int, str, float, etc.)
__format____str__r   r  r  rh   )__or____and____xor____ror____rand____rxor__
__invert__rx   r   c                     g | ]	}|j         
S r3   r   r   ms     r+   
<listcomp>z$EnumType.__new__.<locals>.<listcomp>      99919999r.   c                 Z    g | ]'}|j         vst          |         j                  %|(S r3   )r   ra   r   r   or   s     r+   r'  z$EnumType.__new__.<locals>.<listcomp>  sF       J$;;;~jYZmNc?d?d; ;;;r.   c                 J    g | ]}|j         vs|j         v |j        v | S r3   )r   r   r*  s     r+   r'  z$EnumType.__new__.<locals>.<listcomp>  sO       !888j555!z?X:X:X 
 ;Y:X:Xr.   z'member order does not match _order_:
  z
  )(r   __new__r   r   popr   r   rm   r   ri   r   r  
_find_new_r   _find_data_repr_rS   RuntimeErrorr   r   r   r   r   rd   r  r  r   rj   r   r   r	   __new_member__rQ   r   r|   r   r   sortedr   r   r   )r  r  r  	classdictr  r  r	  ignorer   member_namesinvalid_namesr   r  r  r-  save_newuse_argsrH   r(   r   emethodenum_methodfound_methodobject_methoddata_type_methodmember_listr   r   s                              @r+   r-  zEnumType.__new__  s     	K"577?7C	JJTJJJ 	Z,,33J???:& 	% 	%CMM#t$$$$ !. L))UBK7 	=HH<<m<<<<<   
 --	400**++	 #*"6"6sE"B"BZ&-&8&8;
' '#8 %,	.!"*	, ! 	3 	3DdOE+E22IdOO ')	"#$&	.!*,	&'+-	'(%0	/"$+$<$<S%$H$H	.!  ;:|T:: 	, $%	- &'	"#"#	,"&	,	#C(#uiPP4PPJJ 	# 	# 	# +"CCCCCC	# ?I 	,--- H$5$5f$$2   9,,(3(>
%*4*?	,'	))$,V^++ )1F%+
"'1'9	)$J 	; 	;D9$$%j$77&z488 ' 5 5#*;#=#= $4m#DDDJk::: 
:t < < 2 2
 y((")$"5"5KJk:::&1IdO   4,3
)!%J '3'' <!//#s3399;; #Jz4,H,H#J---J...J 0111J---J----*Z">">99j999Kf[1111+5+J
(    !(    	   $  G *333i%444gg?  
 s   +G 
G(	G##G(c                     	 dS )NTr3   r  s    r+   __bool__zEnumType.__bool__  s    	 tr.   rL   modulerV   rR   startr  c          	      l    	 ||                      | |          S |                     |||||||          S )NrD  )r-  _create_)r  r(   namesrE  rV   rR   rF  r  s           r+   __call__zEnumType.__call__  sR    	0 =;;sE***||!!    	r.   c                    	 t          |t                    sSdd l}|                    dt          d           t          dt          |          j        d| j        j        d          t          ||           o|j	        | j
        v S )Nr   zin 3.12 __contains__ will no longer raise TypeError, but will return True or
False depending on whether the value is a member or the value of a memberr@   r   z'unsupported operand type(s) for 'in': 'z' and '')rQ   r	   r   r   r   rd   rR   r2   r   r   r   )r  r   r   s      r+   __contains__zEnumType.__contains__  s    	 &$'' 
	LOOOMM`& 	     )LL---s}/I/I/IKL L L &#&&L6=C<L+LLr.   c                     || j         v rt          | j        d|d          t                                          |           d S )Nz cannot delete member rP   )r   r   r0   r   __delattr__)r  attrr   s     r+   rO  zEnumType.__delattr__  sQ     3### #,,,PTPTPT!UVVVD!!!!!r.   c                 p   t          g d| j        z             }| j        t          j        ur|                    d           | j        t          j        ur|                    d           | j        t          u rt          |          S t          t          t          | j                            |z            S )N)
r   rM  __doc____getitem____iter____len____members__r1   r0   r2   r-  __init_subclass__)
r   r   r   r   r-  addrW  r   r3  dir)r  interestings     r+   __dir__zEnumType.__dir__  s       
 $%   6>11OOI&&& (@@@OO/000&&+&&& #c#"34455CDDDr.   c                     	 t          |          rt          |          	 | j        |         S # t          $ r t          |          d w xY wr&   )rI   r   r   r   r  rH   s     r+   __getattr__zEnumType.__getattr__  se    	 d 	' &&&	1#D)) 	1 	1 	1 &&D0	1s	   . A	c                     	 | j         |         S r&   r   r]  s     r+   rS  zEnumType.__getitem__  s    	 %%r.   c                 ,     	  fd j         D             S )Nc              3   2   K   | ]}j         |         V  d S r&   r`  r   rH   r  s     r+   r   z$EnumType.__iter__.<locals>.<genexpr>  s+      FF4 &FFFFFFr.   )r   rB  s   `r+   rT  zEnumType.__iter__  s(    	 GFFF33EFFFFr.   c                 ,    	 t          | j                  S r&   )rF   r   rB  s    r+   rU  zEnumType.__len__   s    	 3%&&&r.   c                 ,    	 t          | j                  S r&   )r   r   rB  s    r+   rV  zEnumType.__members__&  s    	   0111r.   c                 b    t           t          | t                     r
d| j        z  S d| j        z  S )Nz	<flag %r>z	<enum %r>)r   r   r0   rB  s    r+   r   zEnumType.__repr__0  s1    
3 5 5----r.   c                 F     	  fdt           j                  D             S )Nc              3   2   K   | ]}j         |         V  d S r&   r`  rc  s     r+   r   z(EnumType.__reversed__.<locals>.<genexpr>:  s+      PP4 &PPPPPPr.   )reversedr   rB  s   `r+   __reversed__zEnumType.__reversed__6  s0    	 QPPP8C<N3O3OPPPPr.   c                     	 | j                             di           }||v rt          d|          t                                          ||           d S )Nr   zcannot reassign member )r   r   r   r   __setattr__)r  rH   r(   
member_mapr   s       r+   rl  zEnumType.__setattr__<  sa    	 \%%nb99
: .!GHHHD%(((((r.   c          	         	 | j         }|| fn|| f}	|                     ||	          \  }
}|                    ||	          }t          |t                    r(|                    dd                                          }t          |t          t          f          r|rt          |d         t                    rg|g }}g }t          |          D ]Q\  }}|
                    ||||d d                    }|                    |           |                    ||f           R|d}|D ],}t          |t                    r|||         }}n|\  }}|||<   -|>	 t          j        d          j        d         }n# t          t           t"          f$ r Y nw xY w|t%          |           n||d<   |||d<   |                    |||	||	          S )
Nr   rx   r   r3   r@   r0   r1   r2   r  )r   r  r  rQ   r   r|   r   r   rr   r   r   r   sys	_getframe	f_globalsr   rm   r   rk   r-  )r  
class_namerI  rE  rV   rR   rF  r  r  r  rC   r  r4  original_nameslast_valuescountrH   r(   itemr   member_values                        r+   rH  zEnumType._create_I  s   
	 -<dC[((U;;:''
E::	 eS!! 	4MM#s++1133EeeT]++ 	, 	,*U1Xs:S:S 	,$)2ENK(88 , ,t"88ue[YZYZYZ^\\""5)))dE]++++=E  	2 	2D$$$ 1,0%+\,0)\%1Ik"" >q))3J?"J9   >#I....&,Il#(0In%w
E9xXXXs   E4 4FF)r  	as_globalc                8   	 t           j        |         j        }|r|j        }n|}fd|                                D             }	 |                    d            n'# t
          $ r |                    d            Y nw xY wd |D             }	||	d<   t          |t          f|	          }
 t          | |pt                    |
          } |rt          |            n4t           j        | j                 j                            | j                   | ||<   | S )Nc                 4    g | ]\  }} |          ||fS r3   r3   r   rH   r(   filters      r+   r'  z&EnumType._convert_.<locals>.<listcomp>  s?     ! ! !D%6$<<!u! ! !r.   c                 "    | d         | d         fS NrL   r   r3   ts    r+   <lambda>z$EnumType._convert_.<locals>.<lambda>  s    !ad| r.   r   c                     | d         S Nr   r3   r  s    r+   r  z$EnumType._convert_.<locals>.<lambda>  s
    qt r.   c                 ,    i | ]}|d          |d         S )r   rL   r3   )r   r  s     r+   
<dictcomp>z&EnumType._convert_.<locals>.<dictcomp>  s"    ,,,q!ad,,,r.   r1   )etyper  )rp  modulesr   r   sortrd   rR   r   _simple_enumr   r   r1   r   rV  )r  rH   rE  r}  sourcer  ry  module_globalsr   bodytmp_clss      `       r+   	_convert_zEnumType._convert_  sT   	 V,5 	$_FF#F! ! ! !#)<<>>! ! !	-LL33L4444 	- 	- 	-LL^^L,,,,,	- -,G,,,#\tfZ..@lx/?4@@@II 	IK'077HHH"t
   A !BBc                     |D ]=}|j         D ]3}t          |t                    r|j        rt	          d|d|          4>d S )Nr   z> cannot extend )r   rQ   r   r   rd   mclsrs  r  chainr   s        r+   r  z%EnumType._check_for_existing_members_  sr     	 	E  dH-- $2E #))zz441  	 	r.   c                     	 |st           t          fS |                     ||           |d         }t          |t                    st          d          |                     ||          pt           }||fS )NrK   zZnew enumerations should be created as `EnumName([mixin_type, ...] [data_type,] enum_type)`)r   r	   r  rQ   r   rd   _find_data_type_)r  rs  r  r  r  s        r+   r  zEnumType._get_mixins_  s    	  	 4<))*e<<< 2Y
*h// 	L K L L L++J>>H&J&&r.   c                     |D ]P}|j         D ]F}|t          u rt          |t                    r|j        c c S d|j        v r|j        d         c c S GQd S )Nr   )r   r   rQ   r   r  r   r  s        r+   r0  zEnumType._find_data_repr_  s     		5 		5E 5 56>>h// 5,,,,,,4=00=444444 15 tr.   c                 $   t                      }t                      }|D ]}d }|j        D ]}|                    |           |t          u r!t	          |t
                    r+|j        t          ur|                    |j                    nGad|j        v s	d|j        v r/t	          |t
                    r|                    |p|            n|p|}t          |          dk    rt          d|d|          |r|
                                S d S )Nr-  __dataclass_fields__rL   ztoo many data types for : )r   r   rX  r   rQ   r   r   r   rF   rd   r.  )r  rs  r  
data_types
base_chainr  	candidater   s           r+   r  zEnumType._find_data_type_  s;    UU
UU
 	2 	2EI 2 2t$$$6>>h// 
2)77"t'9::: 8 $-//3IT]3Z3Z!$11 ! NN9#4555E ) 1TIIz??Q)


JJWXXX 	>>###4r.   c                 4   	 |                     dd           }|d uo|d u}|RdD ]C}||fD ]8}t          ||d           }|d d j        t          j        t          j        hvr|} n9| nDt          j        }||t          j        t          j        fv rd}	nd}	|||	fS )Nr-  )r2  r-  FT)r   rS   r-  r   r	   )
r  r4  r  r  r-  r8  r;  possibletargetr9  s
             r+   r/  zEnumType._find_new_  s    	 --	400 T)AgT.A? 8 ) )!,j 9 	 	H$Xvt<<F  L"N L	&   #) &E ' !.
 T\6>,J!J!JHHH(**r.   r&   )r0   r1   r2   classmethodr  r-  rC  rJ  rM  rO  r[  r^  rS  rT  rU  rz   r   rV  r   rj  rl  rH  r  r  r  r0  r  r/  r   r  s   @r+   r   r     sX          [ =A% u u u u u u un  $4$TYZei $ $ $ $ $LM M M*" " " " "E E E$1 1 1 & & &G G G' ' ' ^2 2 ^2. . .Q Q Q) ) ) ) ) 48$TYZei 4Y 4Y 4Y 4Y 4Yl$dV[ $ $ $ $ $L   [ ' ' ['*   [   [8 *+ *+ [*+ *+ *+ *+ *+r.   r   c                       e Zd Z	 d Zd Zd Zed             Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zed             Zed             ZdS )r	   c                    t          |          | u r|S 	 | j        |         S # t          $ r Y n<t          $ r0 | j                                        D ]}|j        |k    r|c cY S Y nw xY w| j        st          d| z            	 d }|                     |          }n# t          $ r}|}d }Y d }~nd }~ww xY w	 t          ||           r|d }d }S t          >t          | t                    r)| j        t          u rt          |t                    r|d }d }S t          |d| j                  }||||t          d| j        d|d          }t          |t                    s||_        |# d }d }w xY w)Nz%r has no members defined is not a valid z	error in z._missing_: returned z" instead of None or a valid member)rR   r   r   rd   r   valuesr   r   r   rQ   r   r   r  r   r   rm   r2   r0   __context__)r  r(   r   r   resultr:  ve_excs          r+   r-  zEnum.__new__G  s    ;;#L		")%00 	 	 	D 	" 	" 	"*1133 " ">U**!MMMMM +" "	"  	?7#=>>>	C]]5))FF 	 	 	CFFFFFF		&#&& ( CFF' $C)>)>$%//Jvs4K4K/ CFF $eeeSEUEU$VWW>ck L[#)"|||VVV5 C "#z22 -&,CO	 CFMMMMsL   " 
A'3A'#A'&A'B 
B4&B//B48E- A E- AE- -E3c                     d S r&   r3   )r*   r   r	  s      r+   r,   zEnum.__init__  s    r.   c                 2   	 |s|S 	 |d         }|                                  ||d         k    r|dz   S t          # t          $ rQ dd l}|                    dt          d           t          |          D ]}	 |dz   c cY S # t          $ r Y w xY w|cY S w xY w)NrK   rL   r   zIn 3.13 the default `auto()`/`_generate_next_value_` will require all values to be sortable and support adding +1
and the value returned will be the largest value in the enum incremented by 1rw   r   )r  rd   r   r   r   ri  )rH   rF  rv  ru  lastr   r   s          r+   r   zEnum._generate_next_value_  s    	  	L	r?D{2&&ax   	 	 	OOOMMd& 	     k**  q5LLLLL    DLLL	s7   ,; ; <B8B<B
BBBBBc                     d S r&   r3   r  r(   s     r+   r   zEnum._missing_  s    tr.   c                 z    | j         j        pt          }d| j         j        d| j        d || j                  dS )N<rP   r  >)r   r  r  r0   r   r   )r*   v_reprs     r+   r   zEnum.__repr__  sC    ,4 $ 7 7 7ffT\FZFZFZFZ[[r.   c                 .    | j         j        d| j        S )NrP   )r   r0   r   r   s    r+   r  zEnum.__str__  s    .1114;;AAr.   c                    	 t                      }| j        j        t          ur't          t                              |                     }t          | dg           D ],}|d         dk    r|| j        vr|                    |           -| j                                        D ]}|j	        
                                D ]\  }}|d         dk    rt          |t                    r<|j        	|| j        vr|                    |           M|                    |           c|| j        vr|                    |           t          t          g d          |z            }|S )Nr   r   rC   )r   rR  __eq____hash__r1   )r   r   r   r   r[  rS   r   rX  r  r   r   rQ   r   r   discardr3  )r*   rZ  rH   r  r<   rI  s         r+   r[  zEnum.__dir__  s~   	 ee>'v55fnnT2233KD*b11 	& 	&DAw#~~$d.?"?"?%%%>%%'' 	* 	*C \//11 * *	c7c>>c8,, *x+t4;L/L/L#---- $++D1111!222OOD)))* PPPQQ  r.   c                 R    t                               t          |           |          S r&   )r   r  )r*   format_specs     r+   r  zEnum.__format__  s    ~~c$ii555r.   c                 *    t          | j                  S r&   )hashr   r   s    r+   r  zEnum.__hash__  s    DK   r.   c                      | j         | j        ffS r&   )r   r   re   s     r+   rh   zEnum.__reduce_ex__  s    ~///r.   c                     | S r&   r3   )r*   memos     r+   __deepcopy__zEnum.__deepcopy__      r.   c                     | S r&   r3   r   s    r+   __copy__zEnum.__copy__  r  r.   c                     	 | j         S r&   r   r   s    r+   rH   z	Enum.name  s    *{r.   c                     	 | j         S r&   r$  r   s    r+   r(   z
Enum.value  s    +|r.   N)r0   r1   r2   r-  r,   r   r  r   r   r  r[  r  r  rh   r  r  r   rH   r(   r3   r.   r+   r	   r	     s       %N6 6 6p  ! ! !F   [\ \ \B B B  :6 6 6! ! !0 0 0       X   X  r.   r	   )	metaclassc                       e Zd ZdS )r   Nr0   r1   r2   r3   r.   r+   r   r              r.   r   c                       e Zd ZdS )r
   Nr  r3   r.   r+   r
   r
     r  r.   r
   c                       e Zd Z	 d Zd ZdS )r   c                 L   	 t          |          dk    rt          d|          t          |          dk    r3t          |d         t                    st          |d         d          t          |          dk    r3t          |d         t                    st          d|d                   t          |          dk    r3t          |d         t                    st          d|d         z            t          | }t                              | |          }||_        |S )	Nrw   ztoo many arguments for str(): rL   r   z is not a stringr@   zencoding must be a string, not zerrors must be a string, not %r)rF   rd   rQ   r   r-  r   )r  r  r(   r   s       r+   r-  zStrEnum.__new__   s   .v;;??)&&KLLLv;;!fQi-- Fq			 DEEEv;;!fQi-- Uivayy STTTv;;!fQi-- Q AVAY OPPPVS%((r.   c                 ,    	 |                                  S r&   )lower)rH   rF  rv  ru  s       r+   r   zStrEnum._generate_next_value_  s    	 zz||r.   N)r0   r1   r2   r-  r   r3   r.   r+   r   r     s7          *    r.   r   c                     | j         S r&   rG   re   s     r+   r"   r"     s
    9r.   c                 ,    t           | j        | j        ffS r&   )rS   r   r   re   s     r+   r#   r#   !  s    T^T[111r.   c                   `    e Zd Z	  e            Z e            Z e            Z e            ZdS )r   N)r0   r1   r2   r   r   r   r   r   r3   r.   r+   r   r   %  sA         TVVFdffGDFFE466DDDr.   r   c                       e Zd Z	 eZd Zed             ZeZed             Z	ed             Z
d Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd ZeZeZeZdS )r   c                     	 |s||ndS t          |          }	 t          |          }n!# t          $ r t          d|z            d w xY wd|dz   z  S )NrL   zinvalid flag value %rr@   )max	_high_bitr   rd   )rH   rF  rv  ru  
last_valuehigh_bits         r+   r   zFlag._generate_next_value_;  s    	  	5!-5514%%
	L ,,HH 	L 	L 	L3j@AAtK	LXaZ  s	   * Ac              #   x   K   	 t          || j        z            D ]}| j                            |          V  d S r&   )rp   r   r   r   )r  r(   vals      r+   r   zFlag._iter_member_by_value_M  sU      	 "%#/"9:: 	2 	2C(,,S111111	2 	2r.   c              #   b   K   	 t          |                     |          d           E d {V  d S )Nc                     | j         S r&   )r   )r&  s    r+   r  z+Flag._iter_member_by_def_.<locals>.<lambda>^  s    an r.   r  )r3  r   r  s     r+   r   zFlag._iter_member_by_def_W  sc      	 **511,,   	 	 	 	 	 	 	 	 	r.   c                    	 t          |t                    st          |d| j                  | j        }| j        }| j        }d }| |cxk    r|k    rn n|||z  z  r| j        t          u rjt          |
                                |
                                          }t          | d|dt          ||          dt          ||                    | j        t          u r||z  }ni| j        t          u r|S | j        t          u r2|dk     r+t          |dz   d|
                                z            |z   }nt          | d| j                  |dk     r
|}|dz   |z   }|| z  }|| z  }||z  }	|r;| j        t          ur-t          | j        d	|d
|dt          |          d          | j        t"          u rt"                              |           }
n| j                            | |          }
t'          |
d          s||
_        |	s|rg }d}|                     |	          D ]!}|                    |           ||j        z  }"|ra|	|z  }| j                                        D ]B\  }}||vr9|j        r2|j        |z  |j        k    r|                    |           ||j        z  }C||z  }d                    d |D                       |
_        |sd |
_        nT|r"| j        t          u rt          | d|          |r&|
xj        d|                     |          z  z  c_        nd |
_        | j                            ||
          }
|
|
| j        |<   |
S )Nr  z invalid value z
    given z
  allowed r   rL   r@   z unknown flag boundary (z) -->  unknown values z []r   |c                     g | ]	}|j         
S r3   r  r%  s     r+   r'  z"Flag._missing_.<locals>.<listcomp>  s    ,G,G,G!QX,G,G,Gr.   z: no members with value z|%s)rQ   r   rm   r2   r   r   r   r  r   r  ry   r{   r   r   r   r0   r   r   r-  r;   r   r   r   r   r   r   r   r   r   r   )r  r(   	flag_masksingles_maskall_bits	neg_valuer}   unknownaliasesrx  pseudo_memberr   combined_valuer&  r  pms                   r+   r   zFlag._missing_a  s1   	
 %%% 	.3eeS5E5EF   O	)>	I2222(22222Hy01 3 ~''u//1193G3G3I3IJJ CCE8(<(<(<(<c)X>V>V>V   7**	)5((4''199
A0@0@0B0B,CDD#$ 
 !9<cnnO   199IqL5(E9*$<-'|+ 	s~T11|||UUUGGGS\\\\C  
 &&"NN3//MM-55c5AAM}i00 	*$)M! 	(7 	(GN&&|44 , ,q!!!!)+ 5$w. -3355 5 5EAr((RZ(BJ<NRTR\<\<\r***&"*4n,G#&88,G,Gw,G,G,G#H#HM ! L'+$$ LS^v55 333!PQQQ L$$0B0B70K0K(KK$$#'M  .99%OO 0=C"9-r.   c                     	 t          || j                  s1t          dt          |          j        d| j        j                  |j        | j        z  |j        k    S )Nz&unsupported operand type(s) for 'in':  and )rQ   r   rd   rR   r2   r   )r*   others     r+   rM  zFlag.__contains__  so    	 %00 	L)KK,,,dn.I.IKL L L }t|+u}<<r.   c              #   L   K   	 |                      | j                  E d {V  d S r&   )r   r   r   s    r+   rT  zFlag.__iter__  s;      	 %%dl33333333333r.   c                 4    | j                                         S r&   )r   	bit_countr   s    r+   rU  zFlag.__len__  s    |%%'''r.   c                     | j         j        }| j         j        pt          }| j        d|d || j                  dS d|d| j        d || j                  dS )Nr  r  r  rP   )r   r0   r  r  r   r   )r*   rU   r  s      r+   r   zFlag.__repr__  sw    >*,4;!)66$,+?+?+?+?@@  %-HHdkkk66$,;O;O;O;OPPr.   c                 Z    | j         j        }| j        |d| j        dS |d| j        S )Nr  )rP   )r   r0   r   r   r*   rU   s     r+   r  zFlag.__str__  s<    >*;'xx66&hh44r.   c                 *    t          | j                  S r&   )boolr   r   s    r+   rC  zFlag.__bool__  s    DL!!!r.   c                     t          || j                  r|j        S | j        t          urt          || j                  r|S t
          S r&   )rQ   r   r   r   r   NotImplemented)r*   flags     r+   
_get_valuezFlag._get_value  sI    dDN++ 	<v--*T4CU2V2V-Kr.   c                     |                      |          }|t          u rt          S | |fD ]*}|                      |          t          d| d          +| j        }|                     ||z            S )NrL  z,' cannot be combined with other flags with |r  r  rd   r   r   r*   r  other_valuer  r(   s        r+   r  zFlag.__or__      ooe,,.((!!%K 	X 	XDt$$, VD V V VWWW -~~ek1222r.   c                     |                      |          }|t          u rt          S | |fD ]*}|                      |          t          d| d          +| j        }|                     ||z            S )NrL  z,' cannot be combined with other flags with &r  r  s        r+   r  zFlag.__and__  r  r.   c                     |                      |          }|t          u rt          S | |fD ]*}|                      |          t          d| d          +| j        }|                     ||z            S )NrL  z,' cannot be combined with other flags with ^r  r  s        r+   r  zFlag.__xor__   r  r.   c                 *   |                      |           t          d|  d          | j        ^| j        t          t
          fv r!|                     | j                   | _        n(|                     | j        | j         z            | _        | j        S )NrL  z' cannot be inverted)	r  rd   r  r  r   r   r   r   r   r   s    r+   r"  zFlag.__invert__  s    ??4  (::::;;;?"5$-//"&..$,"?"?"&..1D}1T"U"Ur.   N)r0   r1   r2   r  r   r   r  r   r   r   r   rM  rT  rU  r   r  rC  r  r  r  r  r"  r   r  r!  r3   r.   r+   r   r   4  s<        N! ! !$ 2 2 [2 +M  [ Z Z [Zx= = =4 4 4( ( (Q Q Q5 5 5" " "  	3 	3 	3	3 	3 	3	3 	3 	3	 	 	 HGHHHr.   r   ro  c                       e Zd ZdS )r   Nr  r3   r.   r+   r   r     r  r.   r   c                 2    	 |                                  dz
  S )NrL   )ry   r'   s    r+   r  r  !  s      !!r.   c                    	 g }| j                                         D ],\  }}||j        k    r|                    ||j        f           -|r4d                    d |D                       }t          d| d|          | S )N, c                 "    g | ]\  }}|d |S z -> r3   r   aliasrH   s      r+   r'  zunique.<locals>.<listcomp>1  s'    LLLuuudd+LLLr.   zduplicate values found in r  )rV  r   rH   r   r   rm   )enumeration
duplicatesrH   r   alias_detailss        r+   r   r   '  s     J#/5577 3 3f6;tV[1222 .		LLLLLN Njmm- . . 	.r.   c                 >    | dk     rdS | dt          |           z  k    S )NrL   Fr@   )r  r'   s    r+   _power_of_twor  6  s(    qyyuA5)))))r.   c                 f    	 | j         j                            d          d         }|d| j        S )NrP   rK   )r   r1   r   r   )r*   rE  s     r+   r   r   ;  s9    
 ^&,,S11"5Fffdkk**r.   c                 j   	 | j         j                            d          d         | j         j        }| j        d|d| j        dS t          | j                  rd| j        S | j        t          j	        ur9d
                    fd| j                            d          D                       S g }| j                            d          D ]L}|d                                         r|                    |           2|                    d|           Md
                    |          S )NrP   rK   r  r  r  c                     g | ]	}d |
S )rP   r3   )r   rH   rE  s     r+   r'  z$global_flag_repr.<locals>.<listcomp>Q  s$    SSSdFFFDD1SSSr.   r   )r   r1   r   r0   r   r   ra   r  r   r   r   rH   isdigitr   )r*   rU   rH   r  rE  s       @r+   r   r   D  s7   
 ^&,,S11"5F~&H{$ffhhh==dl## / &&$++..l///xxSSSSdiooc>R>RSSSTTT""3'' 	3 	3At||~~ 3Avvvqq12222xx~~r.   c                 R    	 | j         | j        j        }|d| j        dS | j         S )Nr  r  )r   r   r0   r   r  s     r+   r   r   [  s8     {>*#88T\\\22{r.   Fc                    	 t          | t                    rt          | _        nt          | _        t          | t
                    r|rt          | _        t          j	        | j
                 j                            | j                   | S r&   )r   r   r   r   r   r   r   r  rp  r  r1   r   r   rV  )r  
update_strs     r+   r   r   e  sr    
 #t (''c8$$ !
 ! K(//@@@Jr.   )r  r9  c                     	  fd}|S )Nc                    | j         }j        | j                            d          }||j        }nj        j        }i }i }|||d<   ||d<   |d<   j        x|d<   }g x|d<   }i x|d<   }i x|d<   }	g |d	<   j        x|d
<   }
j        |d<   t          t                    rpj        |d<   d |d<   d |d<   d |d<   d |d<   t          j        |d<   t          j        |d<   t          j        |d<   t          j        |d<   t          j        |d<   t          j        |d<   t          j        |d<   | j                                        D ]R\  }}|dv r
t)          |          s.t+          ||          st-          |          st/          |          r|||<   M|||<   S| j                            d          d|d<   t1          |f|d          }dD ]b}||vr\t3          |          }t3          ||          }t3          t4          |          }t3          |
|          }|||fv rt7          |||           cg }t          |t                    rdx}}|                                D ]\  }}t9          |t:                    r.t:          j        t>          u r ||dtA          |          |          }||	v rAtC                      }|"                    ||           t7          |||           |	|         ||<   r*t9          |tF                    s|f} ||g|R  }|d         }n ||          }|||_$        ||_%        ||_&        |'                    |           tC                      }|"                    ||           t7          |||           |||<   tA          |          |_(        ||	|<   tS          |          r|*                    |           ||z  }n||z  }|*                    |           ||z  |_+        ||_,        d ||z  -                                z  dz
  |_.        d! |D             }|t_          |          k    r|j0        |_1        n|                                D ]u\  }}t9          |t:                    r5|j        t>          u r  ||dtA          |          |          |_        |j        }||	v rAtC                      }|"                    ||           t7          |||           |	|         ||<   r*t9          |tF                    s|f} ||g|R  }|d         }n ||          }|||_$        ||_%        ||_&        |'                    |           tA          |          |_(        tC                      }|"                    ||           t7          |||           |||<   ||	|<   |*                    |           |*                    |           wd|v r|j        |_2        tf          j        |_        |S )"Nr-  r2  r   r   r   r   r   r   r   r   r  r  r   r   r   r  r  r  r  r  r!  r   r"  )r   __weakref__rR  zAn enumeration.Tr  r  r   rL   r@   c                     g | ]	}|j         
S r3   r$  r%  s     r+   r'  z7_simple_enum.<locals>.convert_class.<locals>.<listcomp>  r(  r.   )4r0   r   r   r   r   r   r-  r   r  r   r   r  r  r  r  r  r!  r   r"  r   rI   r^   rM   r=   rR   rS   r   rj   rQ   r   r(   r   rF   r   r   r   r   r   r   r,   r   ra   r   r   r   ry   r   r3  r   r   r2  r	   )r  rU   r-  
new_memberattrsr  gnvr6  rm  value2member_mapr  rH   r<   r   r<  r=  r>  r?  gnv_last_valuessingle_bits
multi_bitsr(   r   r   r@  r  r  r9  s                            r+   convert_classz#_simple_enum.<locals>.convert_class  s   <'H,""9-- )JJ,4J%/D!")^%\.3.II$%022,..^z8::!"%5&("#.3.AA_$1^eT"" 	1!)!=U-=D"&D!%D%)D!"!%D![DN"lDO"lDO"lDO#}D#}D!%D++-- 	" 	"ID#222$ ";x#>#> "*TBRBR "VdehViVi " T

!d<I&&./DO (UIthPTUUU
J 	; 	;D4%eT22&z488 ' 5 5#*;#=#= $4m#DDDJk:::j$'' P	2'((K*${{}} #2 #2eeT** MtzZ/G/GCa\):):OLLE,,,'zzH))*d;;;Jh777'7'>Jt$$   8)%77 .%*IE!+J!?!?!?!? %a!+J!7!7).$(FM*4F'OOE***'zzH))*d;;;Jh777'-Jt$*-l*;*;F'.4$U+%e,, ,$++D111#u,"e+
#**51111%0:%=J"(3J%$%;z+A*M*M*O*O$PST$TJ!99j999Kf[1111+5+J
(  %{{}}  2  2eeT** ({j00&)c$3|3D3Do&V&V!KE,,,'zzH))*d;;;Jh777'7'>Jt$$   8)%77 .%*IE!+J!?!?!?!? %a!+J!7!7).$(FM*4F'OOE****-l*;*;F''zzH))*d;;;Jh777'-Jt$.4$U+ ''---#**51111(2(:J%!\
r.   r3   )r  r  r9  r!  s   ``` r+   r  r  t  s=    Q Q Q Q Q Q Qd r.   c                       e Zd Z	 dZdZdZdS )r   zno skipped integer valuesz0multi-flag aliases may not contain unnamed flagszone name per valueN)r0   r1   r2   r   r    r!   r3   r.   r+   r   r     s$         -JDK!FFFr.   r   c                       e Zd Z	 d Zd ZdS )r   c                     || _         d S r&   )checks)r*   r%  s     r+   r,   zverify.__init__'  s    r.   c                    | j         }|j        }t          t          |t                    rd}n't          |t                    rd}nt          d          |D ]}|t          u rg }|j                                        D ],\  }}||j	        k    r|
                    ||j	        f           -|r4d                    d |D                       }	t          d|d|	          |t          u r,t          d |D                       }
t          |
          d	k     rt!          |
          t#          |
          }}g }|dk    rPt%          t'          |          d
z   t'          |                    D ]!}d	|z  |
vr|
                    d	|z             "nH|dk    r0t%          |d
z   |          D ]}||
vr|
                    |           nt)          d|z            |r=t          d|d|dd                    d |D                       d d                   |t*          u r#|j        }d |D             g }d}|j                                        D ]t\  }}||v r
|j        dk     rt3          t5          |j                            }
fd|
D             }|r-|
                    |           |t7          t8          |          z  }u|r|t          |          d
k    rd|d         z  }n*dd                    |d d                   d|d         d}t;          |          rd|z  }nd|z  }t          d|d|d|d          |S )Nr  enumz4the 'verify' decorator only works with Enum and Flagr  c                 "    g | ]\  }}|d |S r  r3   r  s      r+   r'  z#verify.__call__.<locals>.<listcomp>;  s'    XXXMUD555$$7XXXr.   zaliases found in r  c              3   $   K   | ]}|j         V  d S r&   r'   )r   r:  s     r+   r   z"verify.__call__.<locals>.<genexpr>?  s$      ::QW::::::r.   r@   rL   zverify: unknown type %rzinvalid rx   z: missing values c              3   4   K   | ]}t          |          V  d S r&   )r   r%  s     r+   r   z"verify.__call__.<locals>.<genexpr>R  s(      ;T;TqCFF;T;T;T;T;T;Tr.      c                     g | ]	}|j         
S r3   r'   r%  s     r+   r'  z#verify.__call__.<locals>.<listcomp>X  s     > > >Q > > >r.   r   c                     g | ]}|v|	S r3   r3   )r   r   member_valuess     r+   r'  z#verify.__call__.<locals>.<listcomp>c  s#    JJJA1M3I3Ia3I3I3Ir.   zalias %s is missingzaliases rK   r  z are missingz
value 0x%xzcombined values of 0x%xzinvalid Flag z/ [use enum.show_flag_values(value) for details])r%  r0   r   r   r	   rd   r!   rV  r   rH   r   r   rm   r   r   rF   minr  ranger  r   r    r   r   r(   rr   rp   r   _or_ra   )r*   r
  r%  rU   	enum_typecheckr  rH   r   r  r  lowhighmissingr   r6  missing_namesmissing_valuer	  missedr(   r.  s                        @r+   rJ  zverify.__call__)  s"   '
; = =IIT** 	TIIRSSS C	 C	E
$/$;$A$A$C$C ? ?LD&v{**"))4*=>>> :$(IIXXZXXX%Z %ZM$*([[--&9 : : ::
 *$$::k:::::v;;??KKVT&&"9S>>!#3Yt__EE 1 1a4v--#NN1a40001 &(("3q5$// . .F??#NN1---. $$=	$IJJJ %$*%IIxxx;T;TG;T;T;T1U1U1U'W"sd&$ % % %%
 +%%*9 > >+ > > > " !#.#;#A#A#C#C > >KD%|++ {Q !."="=>>FJJJJJJJF >%,,T222%f)=)==  =))Q.. 5a8H H / !%		-*< = = = =}R?P?P?P!" &m44 J ,} < 9M I$*'xx7   r.   N)r0   r1   r2   r,   rJ  r3   r.   r+   r   r   #  s<          M M M M Mr.   r   c           
      D   	 g }| j         |j         k    r| j         }t          |                                          }|j         }t          |                                          }t          t          | j                                                  t          |j                                                  z             }t          ||z             D ]/}|dv r||v r||vr|                    d|           *||vr|                    d|           G||         }	||         }
t          |	          st          |	t          j	                  r|dk    r|	
                    dd          
                    dd          }|

                    dd          
                    dd          }||k    r#|                    |dd	|	d
d|
           |	|
k    r#|                    |dd	|	d
d|
           1|                                 |D ]^}g }||vr|                    d|z             n||vr|                    d|z             n| |         j         }t          |                                          }||         j         }t          |                                          }t          ||z             D ]}|dv r||vr|                    d|d|           '||vr|                    d|d|           G||         }	||         }
|	|
k    r#|                    |dd|	d
d|
           |r-|                    |dd                    |                     `dD ]~}||v r||v r||vro||vrkt          | |d           }t          ||d           }t          |d          r|j        }|j        }||k    r$|                    |dd	|ddd|           ~|r%t!          dd                    |          z            d S )N)r1   r   r   rR  zmissing key: zextra key:   rR  rx   rO   	z:
         zchecked -> z

         zsimple  -> z#missing member from simple enum: %rzextra member in simple enum: %r)r1   r   r  zmissing key z not in the simple enum member z
extra key z in simple enum member zchecked member -> zsimple member  -> z member mismatch:
      z
      )r  r   rh   r  __getnewargs_ex____getnewargs__rh   
__reduce__r   z:  30z
simple -> zenum mismatch:
   %sz
   )r   rr   r   r   r   r   callablerQ   rz   r   r|   r  r   rS   r;   r   rd   )checked_enumsimple_enumfailedchecked_dictchecked_keyssimple_dictsimple_keysr6  r   checked_valuesimple_valuecompressed_checked_valuecompressed_simple_valuerH   failed_memberchecked_member_dictchecked_member_keyssimple_member_dictsimple_member_keysr;  checked_methodsimple_methods                         r+   _test_simple_enumrS  x  si   $ F 444#,L--//00!*;++--..\.335566{/4466778  |k122 	 	CUUU$$K''339::::L((339:::: ,S 1*3/M** j.W.W )##/</D/DS/L/L/T/TUYZ\/]/],.:.B.B3r.J.J.R.RSWXZ.[.[+/3JJJ #3@= C C C C3?< B B'" # # #
 #l22MMCCC/<}????/;|>>#   
 	  	 	DM;&&CdJKKKK\))?$FGGGG&24&8&A#&*+>+C+C+E+E&F&F#%0%6%?"%)*<*A*A*C*C%D%D"25GGHH ' 'CJJJ $666%,,,bebebegkgk-lmmmm$777%,,,X[X[X[]a]a-bcccc(;C(@'9#'>(L88)00$'CCC>Km$N$N$N$N>Jl$M$M2& ' ' '
  joom<<<    	 	F $$<)?)?{**v\/I/I!(vt!D!D 'VT B B>:66 ;%3%<N$1$:M!]22MM"FFF/=~@@@@@.;m>>#     H/',,v2F2FFGGGH Hr.   c                <   	 t           j        |         j        }|r|j        }n|}fd|                                D             }	 |                    d            n'# t
          $ r |                    d            Y nw xY w | ||||pt                    }|S )Nc                 4    g | ]\  }} |          ||fS r3   r3   r|  s      r+   r'  z!_old_convert_.<locals>.<listcomp>  s?       evd||5M  r.   c                 "    | d         | d         fS r  r3   r  s    r+   r  z_old_convert_.<locals>.<lambda>  s    AaD!A$< r.   r  c                     | d         S r  r3   r  s    r+   r  z_old_convert_.<locals>.<lambda>  s
    1Q4 r.   )rE  r  )rp  r  r   r   r  rd   r   )	r  rH   rE  r}  r  r  r  r   r  s	      `     r+   _old_convert_rX    s     [(1N     %||~~  G)//0000 ) ) )((((() %gfx7G4
H
H
HCJr  r&   )F)Crp  builtinsrz   typesr   r   operatorr   r1  	functoolsr   __all__r	   r   r   _stdlib_enumsr   r   r   r   r=   rI   rM   rY   r^   ra   rk   rp   rs   r{   r   r   r   r   r   ri   r   rR   r   r   r   r
   r   r   r"   _reduce_ex_by_global_namer#   r   r   r   r   r   r  r   r  r   r   r   r   r  r   r   r    r!   r   rS  rX  r3   r.   r+   <module>r`     s   



     9 9 9 9 9 9 9 9                  
 
 
 26 5 5t 5e 5mh           V     	 	 		 	 	A A A    0 0 0
 
 
' ' '$ $ $ $0          Z\\
' ' ' ' ' ' ' '/+ /+ /+ /+ /+$ /+ /+ /+dt9 t9 t9 t9 t9 t9 t9 t9n{ { { { { { { {||+ |+ |+ |+ |+t |+ |+ |+z M M M M MX M M M M`    t       c8       c8   B   2 2 2 2    7     , d d d d d4& d d d dN    c8TD    " " "  * * *
+ + +  .       b b b b b bH g" " " " " " " " #, 
KS S S S S S S SjwH wH wHr     < ')r.   