U e5d���@s�ddlZddlmZmZddddddd gZd d �Zd d �Zdd�Zdd�Ze �Z Gdd�d�Z Gdd�de �Z dZGdd�de�ZGdd�ded�ZGdd�dee�Zdd�ZGdd�de�ZGdd�dee�Zdd�Zdd �Zd d!�Zd"d#�ZdS)$�N)�MappingProxyType�DynamicClassAttribute�EnumMeta�Enum�IntEnum�Flag�IntFlag�auto�uniquecCst|d�pt|d�pt|d�S)N�__get__�__set__� __delete__)�hasattr)�obj�r�/usr/lib64/python3.8/enum.py�_is_descriptor s  ��rcCsLt|�dkoJ|dd�|dd�ko.dknoJ|ddkoJ|ddkS)N��������__�_�������len��namerrr� _is_dunders &� � �rcCsLt|�dkoJ|d|dko&dknoJ|dd�dkoJ|dd�dkS)Nrr�����r�rrrrrr� _is_sunder!s ���r cCsdd�}||_d|_dS)NcSstd|��dS)Nz%r cannot be pickled)� TypeError��self�protorrr�_break_on_call_reduce0sz6_make_class_unpicklable.._break_on_call_reducez )� __reduce_ex__� __module__)�clsr%rrr�_make_class_unpicklable,sr)c@seZdZeZdS)r N)�__name__r'� __qualname__� _auto_null�valuerrrrr 6scs(eZdZ�fdd�Z�fdd�Z�ZS)� _EnumDictcs&t���g|_g|_g|_d|_dS)NF)�super�__init__� _member_names� _last_values�_ignore� _auto_called�r#�� __class__rrr0Ds  z_EnumDict.__init__csdt|�r�|dkrtd��|dkr<|jr.td��t|d|�nV|dkr�t|t�r`|�dd���}nt |�}||_ t |�t |j �@}|r�td |f��n�t |�r�|d kr�d }n�||j kr�td |��n�||j kr�n�t|��sR||kr�td |||f��t|t��r:|jtk�r4|�|dt|j �|jdd��|_d|_|j}|j �|�|j�|�t��||�dS)N)�_order_�_create_pseudo_member_�_generate_next_value_� _missing_�_ignore_z(_names_ are reserved for future Enum user:z4_generate_next_value_ must be defined before members�_generate_next_valuer<�,� z-_ignore_ cannot specify already set names: %r� __order__r8zAttempted to reuse key: %rz%r already defined as: %rrT)r � ValueErrorr4r!�setattr� isinstance�str�replace�split�listr3�setr1rrr r-r,r=rr2�appendr/� __setitem__)r#�keyr-�alreadyr6rrrJKsT  ��      �  z_EnumDict.__setitem__)r*r'r+r0rJ� __classcell__rrr6rr.=s r.cs�eZdZedd��Z�fdd�Zdd�Zd.ddddd �d d �Zd d �Z�fdd�Z dd�Z dd�Z dd�Z dd�Z dd�Zedd��Zdd�Zdd�Z�fd d!�Zddddd �d"d#�Zd/d$d%�Zd&d'�Zed(d)��Zed*d+��Zed,d-��Z�ZS)0rcCs>|�||�t�}|�||�\}}|dk r:t|dd�|d<|S)Nr:)�_check_for_existing_membersr.� _get_mixins_�getattr)�metaclsr(�bases� enum_dict� member_type� first_enumrrr� __prepare__�s �zEnumMeta.__prepare__c s��dg��d��d}|D]}��|d�q|�||�\�}|���|�\}}} �fdd��jD�} �jD] } �| =qn��dd�} t| �ddh@} | r�td�d� | ����d �kr�d �d <t �� |||��}g|_ i|_ �|_d d �|��D�}i|_d �k�r2�tk �r2d}t�fdd�|D���s2t|��jD�]*}| |}t|t��sZ|f}n|}�tk�rn|f}| �s�||�}t|d��s�||_n6||f|��}t|d��sƈtk�r�||_n �|�|_|j}||_||_|j|�|j ��D]"\} }|j|jk�r�|}�q�q�|j �|�||k�r2t|||�||j |<z||j|<Wntk �r`YnX�q8dD]V} | �k�r|�qjt|| �}t�| d�}t|| d�}|dk �rj||k�rjt|| |��qjtdk �r�|�r�||_ tj |_ | dk �rt| t!��r| �"dd��#�} | |j k�rtd��|S)Nr<csi|]}|�|�qSrr)�.0�k)� classdictrr� �sz$EnumMeta.__new__..r8�mro�zInvalid enum member name: {0}r>�__doc__zAn enumeration.cSs.h|]&}|j��D]\}}t|t�r|�qqSr)�__dict__�itemsrCr)rW�crX�vrrr� �s   �z#EnumMeta.__new__..r&)�__getnewargs_ex__�__getnewargs__r&� __reduce__c3s|]}|�jkVqdS�N)r^�rW�m)rTrr� �sz#EnumMeta.__new__..�_value_)�__repr__�__str__� __format__r&r?z#member order does not match _order_)$� setdefaultrI�poprO� _find_new_r1rHrA�format�joinr/�__new__�_member_names_� _member_map_� _member_type_r[�_value2member_map_�object�anyr)rC�tuplerrj�_name_� __objclass__r0r_rBr!rPr�__new_member__rDrErF)rQr(rRrY�ignorerKrUrs�save_new�use_args� enum_membersrr8� invalid_names� enum_class�dynamic_attributes�methods� member_namer-�args� enum_member�canonical_member� class_method� obj_method� enum_methodr6)rYrTrrs�s��   ��                        zEnumMeta.__new__cCsdS)NTrr5rrr�__bool__3szEnumMeta.__bool__Nr��module�qualname�type�startcCs*|dkr|�||�S|j||||||d�S)Nr�)rs�_create_)r(r-�namesr�r�r�r�rrr�__call__9s �zEnumMeta.__call__cCs:t|t�s$tdt|�j|jjf��t||�o8|j|jkS�Nz3unsupported operand type(s) for 'in': '%s' and '%s')rCrr!r�r+r7r{ru)r(�memberrrr� __contains__^s ��zEnumMeta.__contains__cs(||jkrtd|j��t��|�dS)Nz%s: cannot delete Enum member.)ru�AttributeErrorr*r/� __delattr__)r(�attrr6rrr�es zEnumMeta.__delattr__cCsddddg|jS)Nr7r]� __members__r'�rtr5rrr�__dir__ls ��zEnumMeta.__dir__cCs@t|�rt|��z |j|WStk r:t|�d�YnXdSrf)rr�ru�KeyError�r(rrrr� __getattr__rs  zEnumMeta.__getattr__cCs |j|Srf�rur�rrr� __getitem__�szEnumMeta.__getitem__cs�fdd��jD�S)Nc3s|]}�j|VqdSrfr��rWr�r(rrri�sz$EnumMeta.__iter__..r�r�rr�r�__iter__�szEnumMeta.__iter__cCs t|j�Srf)rrtr�rrr�__len__�szEnumMeta.__len__cCs t|j�Srf)rrur�rrrr��szEnumMeta.__members__cCs d|jS)Nz )r*r�rrrrk�szEnumMeta.__repr__cs�fdd�t�j�D�S)Nc3s|]}�j|VqdSrfr�r�r�rrri�sz(EnumMeta.__reversed__..)�reversedrtr�rr�r� __reversed__�szEnumMeta.__reversed__cs0|j�di�}||krtd��t��||�dS)NruzCannot reassign members.)r^�getr�r/� __setattr__)r(rr-� member_mapr6rrr��szEnumMeta.__setattr__c Cs~|j}|dkr|fn||f}|�||�\} } |�||�} t|t�rR|�dd���}t|ttf�r�|r�t|dt�r�|g} }g} t | �D]8\}}| � |||| dd��}| � |�|� ||f�q�|D].}t|t�r�|||}}n|\}}|| |<q�|� |||| �}|dk�rPzt �d�jd}Wn*tttfk �rN}zW5d}~XYnX|dk�rdt|�n||_|dk �rz||_|S)Nr>r?rrr*)r7rOrVrCrDrErFrzrG� enumerater:rIrs�sys� _getframe� f_globalsr�rAr�r)r'r+)r(� class_namer�r�r�r�r�rQrRrrUrY�original_names� last_values�countrr-�itemr�� member_valuer��excrrrr��s<            zEnumMeta._create_cs�ttj|�}|rt|�}n|}�fdd�|��D�}z|jdd�d�Wn$tk rn|jdd�d�YnX||||d�}t|_|�|j �|||<|S)Ncs g|]\}}�|�r||f�qSrr)rWrr-��filterrr� �s�z&EnumMeta._convert_..cSs|d|dfS)Nrrr��trrr���z$EnumMeta._convert_..)rKcSs|dS�Nrrr�rrrr��r�)r�) �varsr��modulesr_�sortr!�_reduce_ex_by_namer&�updater�)r(rr�r��source�module_globals�membersrr�r� _convert_�s   � zEnumMeta._convert_cOs$ddl}|jdtdd�|j||�S)NrzI_convert is deprecated and will be removed in 3.9, use _convert_ instead.r)� stacklevel)�warnings�warn�DeprecationWarningr�)r(r��kwargsr�rrr�_converts �zEnumMeta._convertcCs<|D]2}|jD]&}t|t�r|jrtd||jf��qqdS)Nz %s: cannot extend enumeration %r)�__mro__� issubclassrrtr!r*)r�rR�chain�baserrrrN s ��z$EnumMeta._check_for_existing_memberscsT|s ttfS�fdd�}|d}t|t�s2td��||�p._find_data_typerzZnew enumerations should be created as `EnumName([mixin_type, ...] [data_type,] enum_type)`zCannot extend enumerations)rxrr�r!rt)r�rRr�rUrTrr�rrOs   zEnumMeta._get_mixins_c Cs�|�dd�}|dk }|dkrpdD]H}||fD].}t||d�}|ddjtjtjhkr,|}q\q,|dk r qpq tj}|tjkr�d}nd}|||fS)Nrs)r}rsFT)r�rPrsrxr) rYrTrUrsr�method�possible�targetr�rrrrpCs*   � zEnumMeta._find_new_)N)N)r*r'r+� classmethodrVrsr�r�r�r�r�r�r�r�r��propertyr�rkr�r�r�r�r�� staticmethodrNrOrprMrrr6rr�s6 %   5 !  .c@speZdZdd�Zdd�Zedd��Zdd�Zd d �Zd d �Z d d�Z dd�Z dd�Z e dd��Ze dd��ZdS)rc Cst|�|kr|Sz |j|WStk r0Yn:tk rh|j��D]}|j|krH|YSqHYnXzd}|�|�}Wn*tk r�}z |}d}W5d}~XYnXzdt ||�r�|W�TSt d||j f�}|dkr�|dkr�|�n|dk�rtd|j |f�}||_ |�W5d}d}XdS)N�%r is not a valid %szDerror in %s._missing_: returned %r instead of None or a valid member) r�rwr�r!ru�valuesrjr;� ExceptionrCrAr*� __context__)r(r-r�r��result�e�ve_excrrrrsws@     ��z Enum.__new__c Cs6t|�D](}z|dWStk r.YqXq|S�Nr)r�r!)rr�r�r�� last_valuerrrr:�s zEnum._generate_next_value_cCsdSrfr)r(r-rrrr;�szEnum._missing_cCsd|jj|j|jfS)N� <%s.%s: %r>)r7r*r{rjr5rrrrk�s �z Enum.__repr__cCsd|jj|jfS)N�%s.%s)r7r*r{r5rrrrl�sz Enum.__str__cs6�fdd��j��D�dd��jD�}dddg|S)Ncs2g|]*}|jD]}|ddkr|�jkr|�qqS�rr)r^ru)rWr(rhr5rrr��s  �z Enum.__dir__..cSsg|]}|ddkr|�qSr�rrgrrrr��s r7r]r')r7r[r^)r#�added_behaviorrr5rr��s  ��z Enum.__dir__cCsJt|�jtjtjfk}|jtks$|r2t}t|�}n |j}|j}|�||�Srf) r�rlrrrvrxrDrjrm)r#� format_spec�str_overriddenr(�valrrrrm�s  zEnum.__format__cCs t|j�Srf)�hashr{r5rrr�__hash__�sz Enum.__hash__cCs|j|jffSrf�r7rjr"rrrr&�szEnum.__reduce_ex__cCs|jSrf)r{r5rrrr�sz Enum.namecCs|jSrf�rjr5rrrr-�sz Enum.valueN)r*r'r+rsr:r�r;rkrlr�rmr�r&rrr-rrrrrqs-    )� metaclassc@s eZdZdS)rN)r*r'r+rrrrr�scCs|jSrfrr"rrrr��sr�c@sleZdZdd�Zedd��Zedd��Zdd�Zd d �Zd d �Z d d�Z dd�Z dd�Z dd�Z dd�ZdS)rc Csd|s|dk r|SdSt|�D]:}zt|�}WqXWqtk rTtd|�d�YqXqd|dS)NrzInvalid Flag value: %rr)r�� _high_bitr�r!)rr�r�r�r��high_bitrrrr:s   zFlag._generate_next_value_cCs.|}|dkr|}|�|�}|dkr*|}|Sr�)r9)r(r-�original_value�possible_memberrrrr;s zFlag._missing_cCsb|j�|d�}|dkr^t||�\}}|r:td||jf��t�|�}d|_||_|j� ||�}|S�Nr�) rwr�� _decomposerAr*rxrsr{rjrn)r(r-� pseudo_memberr� extra_flagsrrrr9#s zFlag._create_pseudo_member_cCs8t||j�s&tdt|�j|jjf��|j|j@|jkSr�)rCr7r!r�r+rj�r#�otherrrrr�7s ��zFlag.__contains__cCsV|j}|jdk r$d|j|j|jfSt||j�\}}d|jd�dd�|D��|jfS)Nr��|cSsg|]}t|jp|j��qSr�rDr{rjrgrrrr�Hsz!Flag.__repr__..)r7r{r*rjr�rr�r#r(r�� uncoveredrrrrkAs �z Flag.__repr__cCs�|j}|jdk r d|j|jfSt||j�\}}t|�dkr^|djdkr^d|j|djfSd|jd�dd�|D��fSdS)Nr�rrz%s.%rr�cSsg|]}t|jp|j��qSrr�rgrrrr�Vsz Flag.__str__..)r7r{r*r�rjrrrr�rrrrlLs �z Flag.__str__cCs t|j�Srf)�boolrjr5rrrr�Ysz Flag.__bool__cCs"t||j�stS|�|j|jB�Srf�rCr7�NotImplementedrjr�rrr�__or__\s z Flag.__or__cCs"t||j�stS|�|j|j@�Srfrr�rrr�__and__as z Flag.__and__cCs"t||j�stS|�|j|jA�Srfrr�rrr�__xor__fs z Flag.__xor__cCsNt|j|j�\}}|�d�}|jD] }||kr"|j|j@s"||B}q"|�|�Sr�)r�r7rj)r#r�r��invertedrhrrr� __invert__ks    zFlag.__invert__N)r*r'r+r:r�r;r9r�rkrlr�rrrrrrrrr�s     c@sPeZdZedd��Zedd��Zdd�Zdd�Zd d �ZeZ eZ eZ d d �Z d S)rcCs*t|t�std||jf��|�|�}|Sr�)rC�intrAr*r9)r(r-� new_memberrrrr;ys  zIntFlag._missing_cCs�|j�|d�}|dkr�|g}t||�\}}|rtt|�}d|}||jkrZ||krZ|�|�|| krjd}q*||N}q*t|�D]*}t�||�}d|_||_ |j� ||�}q||S)Nrr) rwr�r�r�rIr�rrsr{rjrn)r(r-r��need_to_createrr��bit� flag_valuerrrr9�s( �     zIntFlag._create_pseudo_member_cCs0t||jtf�stS|�|j|�|�jB�}|Srf�rCr7rrrj)r#r�r�rrrr�szIntFlag.__or__cCs,t||jtf�stS|�|j|�|�j@�Srfr r�rrrr�szIntFlag.__and__cCs,t||jtf�stS|�|j|�|�jA�Srfr r�rrrr�szIntFlag.__xor__cCs|�|j�}|Srfr�)r#r�rrrr�szIntFlag.__invert__N) r*r'r+r�r;r9rrr�__ror__�__rand__�__rxor__rrrrrrts  cCs |��dSr�)� bit_length�r-rrrr��sr�cCs^g}|j��D]"\}}||jkr|�||jf�q|rZd�dd�|D��}td||f��|S)Nz, cSsg|]\}}d||f�qS)z%s -> %sr)rW�aliasrrrrr��szunique..z duplicate values found in %r: %s)r�r_rrIrrrA)� enumeration� duplicatesrr�� alias_detailsrrrr �s  ��cCs�|}|dk}|r*dd�t|j���D�}ndd�t|j���D�}g}|D],\}}|rJ||@|krJ|�|�||M}qJ|s�||jkr�|�|j|�|jdd�dd�t|�d kr�|dj|kr�|�d�||fS) NrcSs"g|]\}}|jdk r||f�qSrfr�rWrarhrrrr��s �z_decompose..cSs*g|]"\}}|jdk st|�r||f�qSrf)r� _power_of_tworrrrr��s �cSs|jSrfr�)rhrrrr��r�z_decompose..T)rK�reverser)rGrwr_rIr�rr-ro)�flagr-� not_covered�negative�flags_to_checkr�r�r�rrrr��s( � �    r�cCs|dkr dS|dt|�kS)NrFr)r�rrrrr�sr)r��typesrr�__all__rrr r)rxr,r �dictr.rr�rrrr�rrr�r r�rrrrr�s>�    LivI%